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就有个基本的了解了!进阶的事情,后面再说!

原文地址:https://www.cnblogs.com/huaziWEB/p/4529264.html