Node.js中的全局对象global(一)

来源:互联网 发布:手机监听监控定位软件 编辑:程序博客网 时间:2024/05/16 14:34
     通过node执行js与我们平时在浏览器中执行js有所不同,平常我们在网页中执行js代码,我们的全局对象就是window,而所谓的最顶级的global对象,在浏览器中无法直接访问,我们只能通过window这个代理来访问到全局对象的相关属性。但是在node中,我们是可以直接访问到全局对象global的,如:
    
console.log(global); //我们可以直接输出global对象
    global中常用的变量
        __dirname:存放,在node.js中执行的js代码所在的绝对目录。注意:前面有两个下划线。 如:console.info(__dirname);  h:\node
        __filename:存放,在node.js中执行的js代码所在的文件全路径及文件名。如:console.info(__filename);   h:\node\global.js
    global中常用的对象:console、process
console: log()  info()  error()  warn()  time()   timeEnd()
console.log();  //打印日志
console.info(); //打印信息
console.error(); //打印错误
console.warn(); //打印警告
那么这是四个方法有什么不同呢?下面我们来测试一下
console.log("This is a log");
console.info("This is an info");
console.error("This is a error");
console.warn("This is a warn");
在webstorm中运行,我们发现error()和warn()是以红色字体显示的,而log()和info()以黑色字体显示。
我们在cmd中node一下,发现他们四个没有什么区别,cmd中没有颜色的区分,此时我们运用cmd中的一些其他特性,来验证他们的一些相同点和不同点。
我们可以使用cmd中的日志重定向功能,来验证。node xx.js >log.txt   将程序运行的结果重定向到 log.txt这个文件中去
此时我们可以发现,log()和info()方法中的信息被写入了日志文件,而warn()和error()中的信息却显示在cmd中
那么如果将warn()和error()中的信息重定向到文件中呢? node xx.js 1>log.txt 2>err.txt。1代表普通的日志信息,2代表有错误的日志信息
如果我们想把错误信息也输出到log.txt中而不是分开写入到两个文件中,我们可以通过如下方式实现:node xx.js 1>log.txt 2>&1
统计一段代码执行的时间:
console.time();
console.timeEnd();
例如:
console.time('test'); //任意的字符串,保证前后一致
for(var i=0;i<10000;i++){}
console.timeEnd('test');
process存放程序执行的一些相关信息
输出:process.stdout/process.stderr
输入:process.stdin
process.cwd(); //输出我们执行node命令所在的绝对路径,而__dirname是输出我们执行js文件所在的绝对路径
process.stdout:standard output 标准输出
process.stderr:standard error  标准错误输出
console的输出方法实际上就是调用的process.stdout和process.stderr来完成的。
例:
process.stdout.write('This is stdout...');
process.stderr.write('This is stderr...');

process.stdin案例
process.stdout.write('请输入:');
process.stdin.setEncoding('utf-8'); //设置编码集
process.stdin.on('data',function(data){//监听用户的输入信息,用户的输入信息会被自动保存到回调函数的data中
console.info(data);
}); 
process.stdout.write('请输入:');
process.stdin.setEncoding('utf-8'); //设置编码集
        process.stdin.on('readable',function(){ //当有信息可以读取时触发,此时回调函数中没有参数,我们只能通过一下方式获取用户的输入
console.info(process.stdin.read()); //读取用的输入
}); //监听用户的输入反对

0 0