Node里面的全局对象(一)Process与__filename
(1)__filename
__filename:返回当前模块文件解析后的绝对路径,该属性并非全局,而是模块作用域下
console.log(global.__filename); //undefined
console.log(__filename); //正确
(2)__dirname
返回当前模块文件所在目录(找的是文件夹而不是文件)解析后的绝对路径,该属性并非全局,而是模块作用域下
console.log(__dirname);
//命令行形式的时钟
setInterval(function(){
var d = new Date();
console.log('现在是:' + d.getFullYear() + '年' + (d.getMonth()+1) + '月' + d.getDate() + '日' + d.getHours() + " : " + d.getMinutes() + ' : ' + d.getSeconds());}, 1000);
(3)process全局对象,通过这个对象提供的属性和方法,使我们可以对当前的程序进程进行访问
console.log(process);
- argv: - Array -组包含命令行参数的数组,第一个元素是node,第二个元素是js文件的名称,接下来的元素依次是命令行传入的参数
- execPath: - 开启当前进程的绝对路径
- env: -返回用户环境信息
console.log(process.argv);
console.log(process.env);
- 具体几个参数(了解就好)
version: -返回版本的信息
versions: - 返回node以及node依赖包版本信息
pid: - 当前进程的ID
title: - 当前进程的名称
arch:返回当前CPU处理器框架
exit(code): 退出
kill(pid): - 想进程发送信息
重要的process的还是标准输入输出流
- process.stdin(标准输入流)输出process.stdout(标准输出流)
- process.stdout.write("hello");向用户输出
- 默认情况下process的输入时关闭的。要是想监听必须要开启
-
process.stdin.resume(); //这句话就表示开启用户输入模式
process.stdin.on('data',function(chunk){
console.log("用户输入了"+chunk);
})
下面这个例子就是监听用户输入的数据并且计算
var a;
var b;
process.stdin.resume(); //开启监听设备
process.stdin.on('data',function(data){
if(!a)
{
a = Number(data);
}else
{
b= Number(data);
process.stdout.write("最后的结果:"+(a+b));
process.exit();
}
})
效果图如下: