1.在浏览器JavaScript中,通常window是全局对象。而node中的全局对象则是global。所有全局变量(除global之外)都是global对象的属性。
2.global的最根本作用是作为全局变量的宿主,满足以下条件的变量是全局变量:在最外层定义的变量;全局对象的属性;隐式定义的变量(未定义直接赋值的变量)。注意,当你定义一个全局变量时,这个变量也会成为全局对象的属性。在node中,不可能在最外层定义变量,因为所有用户的代码都是属于当前模块的,而模块本身不是最外层上下文。
3.process:process是一个全局变量,即global对象的一个属性。用于描述当前node进程的状态,提供了一个与操作系统的简单接口。
①process.argv是命令行参数数组,第一个元素是node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数。
②process.stdout是标准输出流,通常使用console.log(),而process.stdout.write()函数提供了更底层的接口。
③process.stdin是标准输入流,初始时他是被暂停的,需要恢复流,并手动编写流的事件响应函数。
process.stdin.resume();
process.stdin.on("data",function(){});
④process.nextTick(callback)的功能是为事件循环设置一项任务,node会在下次事件轮询时调用callback。
⑤其他一些属性:process.platform;process.pid;process.execPath;process.memoryUsage();
4.console用于提供控制台标准输出。
①console.log():接收若干个参数,如果只有一个参数,则输出这个参数的字符串形式。如果有多个参数,则以类似于C语言printf()命令的格式输出。没有参数时,则打印一个换行。
②console.error():与console.log用法相同,只是向标准错误流输出。
③console.trace():向标准错误流输出当前调用栈。
5.node常用工具util:util是一个node核心模块,提供了常用的函数的集合,用于弥补核心JavaScript的功能过于精简的不足。
①util.inherits(constructor,superConstructor)是一个实现对象访问原型继承的函数。
②util.inspect(object...)是一个将任意对象转换为字符串的方法。
③util.isArray(object); util.isRegExp(object); util.isDate(object); util.isError(object);
6.node文件系统:node文件系统封装在fs模块中,提供了文件的读取,写入,更名,删除,遍历目录,链接等POSIX文件系统操作。与其他模块不同的是,fs模块中的所有操作都提供了同步和异步两个版本。
①公共引用:var fs =require("fs");var path=require("path");
②读文件:readFile(filename,[options],callback(err,data));
写文件:writeFile(filename,data,[option],callback(err,data));
追加方式写文件:appendFile(filename,data,[option],callback);
③打开文件:fs.open(filename,flags,[mode],callback(err,fd));
读文件,读取打开的文件内容到缓冲区中:fs.read(fd,buffer,offset,length,possion,callback);
写文件,将缓冲区数据写入文件:fs.write(fd,buffer,offset,length,position,callback);
刷新缓冲区:fs.fsync(fd,[callback]);
关闭打开的文件:fs.close(fd);
④创建目录:fs.mkdir(path,[mode],callback(err));
读取目录:fs.readdir(path.callback(err,files));
查看文件和目录信息:fs.stat(path,callback(err,stats)); fs.lstat(path,callback(err,stats));
查看文件和目录是否存在:fs.exists(path,callback(exists));
⑤移动/重命名文件或目录:fs.rename(oldpath,newpath,callback(err));
删除空目录:fs.rmdir(path,callback(err));