正文
核心模块是Node.js的心脏,主要是有一些精简高效的库组成(这方面和Python有很大的相似之处),为Node.js提供了基础的API。主要内容包括:
Node.js核心入门(一)
全局对象
常用工具
事件机制
Node.js核心入门(二)
文件系统访问
HTTP服务器与客户端
全局对象
全局对象我想学过JavaScript的都知道在浏览器是window,在程序的任何地方都可以访问到全局对象,而在Node.js中,这个全局对象换成了global,所有的全局变量(除了global本身)都是global对象的属性。而我们在Node.js中能够直接访问的对象通常都是global的属性,如:console,process等。
全局对象与全局变量
global最根本的作用就是作为全局变量的宿主。按照ECMAScript规范,满足以下条件的变量即为全局变量:
在最外层定义的变量(在Node.js中不存在,因为Node.js的代码在模块中执行,不存在在最外层定义变量)
全局对象的属性
隐式定义的变量(即未定义而直接进行赋值的变量)
当我们定义一个全局变量的时候,这个全局变量会自动成为全局变量的属性。
process
process 对象是一个全局变量,它提供当前 Node.js 进程的相关信息,以及控制当前 Node.js 进程。通常我们在写本地命令行程序的时候,少不了和它打交道。下面是它的最常用的成员方法:
1.process.argv
process.argv 属性返回一个数组,这个数组包含了启动Node.js进程时的命令行参数。第一个元素为process.execPath,第二个元素为当前执行的JavaScript文件路径,剩余的元素为其他命令行参数。
例如存储一个名为argv.js的文件:
// print process.argv
process.argv.forEach((val, index) => {
console.log(`${index}: ${val}`);
});
复制代码
则命令行运行时这样的:
$ node process-args.js one two=three four
0: /usr/local/bin/node
1: /Users/mjr/work/node/process-args.js
2: one
3: two=three
4: four
复制代码
2.process.stdout
process.stdout是标准输出流,通常我们使用的console.log()输出打印字符,而process.stdout.write()函数提供了更为底层的接口。
process.stdout.write('请输入num1的值:');
复制代码
3.process.stdin
process.stdin是标准输入流,初始时它是暂停的,要想从标准输入读取数据,我们必须恢复流,并手动编写流的事件响应函数。