Node.js基本模块
因为Node.js是运行在服务区端的JavaScript环境,服务器程序和浏览器程序相比,最大的特点是没有浏览器的安全限制了,而且,服务器程序必须能接收网络请求,读写
文件,处理二进制
内容,所以,Node.js内置的常用模块就是为了实现基本的服务器
功能。这些模块在浏览器环境中是无法被执行的,因为它们的底层
代码是用C/C++
在Node.js运行环境中实现的。
global
在前面的JavaScript课程中,我们已经知道,JavaScript有且仅有
一个全局对象,在浏览器中,叫window对象。而
在Node.js环境中,也有唯一的全局对象,但不叫window,而叫global,
这个对象的
属性和
方法也和浏览器环境的window不同。进入Node.js交互环境,可以直接输入:
> globa
l.console
Console
{
log: [Function: bound ],
info: [Function: bound ],
warn: [Function: bound ],
error: [Function: bound ],
dir: [Function: bound ],
time: [Function: bound ],
timeEnd: [Function: bound ],
trace: [Function: bound trace],
assert: [Function: bound ],
Console: [Function: Console] }
process
process也是Node.js提供的
一个对象,它代表当前Node.js进程。通过process对象可以拿到许多有用信息:
> process === globa
l.process;
true
> proces
s.version;
'v5.2.0'
> proces
s.platform;
'darwin'
> proces
s.arch;
'x64'
> proces
s.cwd(
); //返回当前工作目录
'/Users/michael'
> proces
s.chdir('/private/tmp'
); // 切换当前工作目录
undefined
> proces
s.cwd(
);
'/private/tmp'
JavaScript程序是由事件驱动执行的单线程模型,Node.js也不例外。Node.js不断执行响应事件的JavaScript
函数,直到没有任何响应事件的
函数可以执行时,Node.js就
退出了。
如果我们想要在下一次事件响应中执行
代码,可以
调用proces
s.nextTick():
// test.js
// proces
s.nextTick()将在下一轮事件循环中
调用:
proces
s.nextTick(function ()
{
console.log('nextTick call
BACk!'
);
}
);
console.log('nextTick was set!'
);
用Node执行上面的
代码node test.js,你会看到,打印
输出是:
nextTick was set!
nextTick call
BACk!
这说明传入proces
s.nextTick()的
函数不是立刻执行,而是要等到下一次事件循环。
Node.js进程本身的事件就由process对象来处理。如果我们响应exit事件,就可以在程序即将
退出时执行某个回调
函数:
// 程序即将
退出时的回调
函数:
proces
s.on('exit',function (cod
E) {
console.log('about to exit with code: ' + cod
E);
}
);
判断JavaScript执行环境
有很多JavaScript
代码既能在浏览器中执行,也能
在Node环境执行,但有些时候,程序本身需要判断自己到底是在什么环境下执行的,常用的方式就是根据浏览器和Node环境提供的
全局变量名称来判断:
if (typeof(window) === 'undefined')
{
console.log('node.js'
);
} else
{
console.log('browser'
);
}
转自: https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501482448f6b36071ab6949d3a7ecb5a71a3c9df9000
--- end ---