zoukankan      html  css  js  c++  java
  • node基础

             今天在网上看到了一个原来没有听说过的定义,高阶函数和偏函数。个人觉得这么个形容还是很有创意的。也可能我很土鳖没有见过世面吧!在此稍作解释。

    function hignFun(){
        return function(a,b){
            a+b;
        }
    }
    var add = hignFun();

          据说这就是高阶函数,其实这么个称谓我觉得也是比较恰当的.类比高数中的高阶函数,还是比较形象的.起码对于记忆标识这种形式的函数是有帮助的.

    var isType = function  (type) {
        return function(obj){
            toString.call(obj) == "[object "+type+"]" 
        }
    }
    var isArray() = isType("Array");

          这样的形式的函数叫做偏函数.大意就是传参进去搞个半成品,返回出来.正式使用的时候再传参完成整个操作.有点像工厂模式.高阶函数和偏函数的唯一区别就是,是否外层函数对内层函数构成影响.要这么来说,偏函数这个称谓的确很恰当.

           好了,进入正题.node的基础知识梳理.

           1,fs模块

           node的异步IO操作是其核心的最重要的技术之一。异步的操作使得避免了传统多线程模式下,频繁切换上下文的大量开销。fs模块提供了一些列的API,已经趋于成熟。

          一下给出了一些基本的常用的API示例代码。千万不要复制了去运行,仅仅提供观看功能!

    var fs= require("fs");
    
    fs.writeFile('test.txt', 'Hello Node', function (err) {
        if (err) throw err;
       console.log('Saved successfully'); //文件被保存
    });
    
    fs.appendFile("nodeNote.txt","im coming!!!",function(err){
        if (err) throw err
            console.log("data already add to end of file")
    })
    
    fs.exists("nodeNote.txt",function(flog){
        process.stdout.write(flog+"");
    })
    
    fs.rename("nodeNote.txt","Note.txt",function(err){
        if(err) throw err
            console.log("rename successfully");
    })
    
    fs.readFile("Note.txt",function  (err,data) {
        if(err){
            throw err
        }else{
            process.stdout.write(data+"
     I am data!!");
        }
    })
    
    
    fs.unlink("n.js",function(err){
        if (err) {
            throw err
        };
        process.stdout.write("remove successful")
    })
    
    fs.mkdir("n/c",function  (err) {
        if (err) {
            process.stdout.write(err)
        };
    })
    fs.rmdir("./node",function  (err) {
        if (err) {
            process.stdout.write(err)
        };
    })
    
    fs.readdir("./hz",function(err,files){
        if (err) {
            throw err
        };
        console.log(files);
    })

             以上给出的都是异步的操作,fs模块还提供了同步的操作。具体视情况而定去选择。

           2,util模块提供了一些常用的工具方法,主要有对字符串的格式化,判断变量类型等等操作。

    var util = require('util');
    
    var result;
    result = util.inspect(object, showHidden=false, depth=2)
    result = util.format("%s:%j","abs",{name:2},12);
    result = util.isArray([1,"hauzi"]);
    result = util.isDate(new Date())
    result = util.isRegExp(/d/)
    console.log(result)

              3,url模块

            URL模块主要给出了URL解析相关的一些操作。json2string,string2json。还有具体的域名解析等等

    var url = require("url");
    
    var urlString = url.parse("http://www.baidu.com");
    for(var key in urlString){
        console.log(key+" : "+urlString[key])
    }
    
    var urlString = url.format({
        host:"imooc.com",
        protocol :"https",
        port:"80",
        path:"/news"
    })
    console.log(urlString)
    var combine = url.resolve("http://baidu.com/","/news");
    console.log(combine);

              4,querystring

              querystring中主要有两个方法,stringify和parse实际上在js中也有实现。JSON.stringify,JSON.parse.那独立到querystring,顾名思义是为了query而准备的了!

    var query = require("querystring")
    
    var string = query.stringify({name:'huazi',age:22},"^","_");
    console.log(string) //name_huazi^age_22
    
    var str = query.parse('name_huazi^age_22','^','_');
    console.log(str);    //{ name: 'huazi', age: '22' }

           5,path

           做web的都知道,在处理文件的时候path是个比较麻烦的事情。没有工具的情况下只能手工的处理。当然有了path之后一切轻松了!只列出一部分哦

    var path = require("path");
    
    var newpath = path.normalize("../sbin/./apm_available///sbin");
    var newpath = path.join("url.js//newpath","//mnt/newpath")
    var newpath = path.dirname("./nodeNote/dirname/path");
    var newpath = path.extname("./url.ht/path.js");
    
    console.log(newpath);

              6,child_process

             启动一个进程去执行一项任务。特别的fork,exec感觉更加的友好!

    var childProcess = require("child_process");
    
     var child = childProcess.spawn("ls"['-l']);
    child.stdout.on('data',function(data){
        console.log(data)
    })
    childProcess.exec("ls -lah",function(err,stdout,stderr){
        if (err) {
            throw err
        };
        console.log(stdout);
    // })
    childProcess.execFile("node util.js",function(err,stdout,stderr){
        if (err) {
            throw err
        };
        console.log(stdout)
    });
    childProcess.fork("querystring.js");

            7,os

           QQ截图20150525230649

                截图来自nodeAPI中文网。不知道什么时候能用到。只需要判断需求是系统级别的,那估计在这找就没差了!

            大致基础部分就这些!如果这些都搞定了,对node就有个基本的了解了!进阶的事情,后面再说!

  • 相关阅读:
    node作为反向代理服务器
    引擎模板jade常见用法
    express4中模板引擎ejs
    express4+mysql博客项目
    关于zepto需要注意的地方
    css中需要注意的地方
    typescript基础类型
    vue全文搜索高亮显示
    js搜索全文高亮显示
    js随机验证码
  • 原文地址:https://www.cnblogs.com/huaziWEB/p/4529264.html
Copyright © 2011-2022 走看看