因为Node.js是运行在服务区端的JavaScript环境,服务器程序和浏览器程序相比,最大的特点是没有浏览器的安全限制了,而且,服务器程序必须能接收网络请求,读写文件,处理二进制内容,所以,Node.js内置的常用模块就是为了实现基本的服务器功能。这些模块在浏览器环境中是无法被执行的,因为它们的底层代码是用C/C++在Node.js运行环境中实现的。
在前面的JavaScript课程中,我们已经知道,JavaScript有且仅有一个全局对象,在浏览器中,叫window对象。而在Node.js环境中,也有唯一的全局对象,但不叫window,而叫global,这个对象的属性和方法也和浏览器环境的window不同。进入Node.js交互环境,可以直接输入:
>global.console
查看console对象的属性。
常见的全局对象和函数,如下表: |对象/函数|含义| |-|-| |__filename|表示当前正在执行的脚本的文件名。| |__dirname|表示当前执行脚本所在的目录。 |setTimeout(cb, ms)|指定的毫秒(ms)数后执行指定函数(cb)。:setTimeout() 只执行一次指定函数。| |setInterval(cb, ms)|指定的毫秒(ms)数后执行指定函数(cb)。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。| |clearTimeout(t)|清除一个之前通过 setTimeout() 创建的定时器| |console|用于提供控制台标准输出| |process|它用于描述当前Node.js 进程状态的对象,提供了一个与操作系统的简单接口。|
实例
function sayHello(){
console.log( "Hello, Nodejs!");
}
// 输出全局变量 __filename 的值
console.log(__filename );
// 输出全局变量 __dirname 的值
console.log( __dirname );
// 两秒后执行以上函数
let timer = setTimeout(sayHello, 2000);
// 清除定时器
//clearTimeout(timer);
console.log(global.console);
// 输出到终端
process.stdout.write("Hello World!" + "\n");
// 通过参数读取
process.argv.forEach(function(val, index, array) {
console.log(index + ': ' + val);
});
// 获取执行路径
console.log(process.execPath);
// 平台信息
console.log(process.platform);
// 输出当前进程编号
console.log('当前进程编号: ' + process.pid);
console.log(global.console===console);
console.log(global.process===process);
//判断JavaScript执行环境
if (typeof(window) === 'undefined') {
console.log('服务器环境node.js');
} else {
console.log('浏览器环境browser');
}
运行结果:
D:\vue_course\globaldemo\src\main.js
D:\vue_course\globaldemo\src
{
log: [Function: bound consoleCall],
warn: [Function: bound consoleCall],
dir: [Function: bound consoleCall],
time: [Function: bound consoleCall],
timeEnd: [Function: bound consoleCall],
timeLog: [Function: bound consoleCall],
trace: [Function: bound consoleCall],
assert: [Function: bound consoleCall],
clear: [Function: bound consoleCall],
count: [Function: bound consoleCall],
countReset: [Function: bound consoleCall],
group: [Function: bound consoleCall],
groupEnd: [Function: bound consoleCall],
table: [Function: bound consoleCall],
debug: [Function: bound consoleCall],
info: [Function: bound consoleCall],
dirxml: [Function: bound consoleCall],
error: [Function: bound consoleCall],
groupCollapsed: [Function: bound consoleCall],
Console: [Function: Console],
profile: [Function: profile],
profileEnd: [Function: profileEnd],
timeStamp: [Function: timeStamp],
context: [Function: context],
[Symbol(kBindStreamsEager)]: [Function: bound ],
[Symbol(kBindStreamsLazy)]: [Function: bound ],
[Symbol(kBindProperties)]: [Function: bound ],
[Symbol(kWriteToConsole)]: [Function: bound ],
[Symbol(kGetInspectOptions)]: [Function: bound ],
[Symbol(kFormatForStdout)]: [Function: bound ],
[Symbol(kFormatForStderr)]: [Function: bound ]
}
Hello World!
0: C:\node-v12.13.0-win-x64\node.exe
1: D:\vue_course\globaldemo\src\main.js
C:\node-v12.13.0-win-x64\node.exe
win32
当前进程编号: 14560
true
true
服务器环境node.js
Hello, Nodejs!