Nodejs中的全局变量、属性

浏览器中有window对象 this默认就是指的window,浏览器无法直接访问global对象 所以需要window来代理
在node中可以直接访问global

全局变量

1
2
3
4
5
6
7
// 下面的a现在就是全局变量
global.a = 1;
console.log(a); // 1

// let不会声明到全局作用域下
let b = 2;
console.log(global.b); // undefined

node的特点:每个文件都是一个模块,模块外面包了一个匿名函数(module,exports,require,__dirname, ____filename)

1
2
console.log(this === global); // false 
console.log(this === module.exports); // true

想要打印global可以直接打印 global , 也可以如下 默认是global调用的

1
2
3
(function () {
console.log(this);
})();

全局属性

global中的属性叫全局属性 、 module,exports,require,__dirname,__filename 叫全局对象

1
2
// 打印global中的属性
console.log(Object.keys(global));

全局属性:

  • process 进程 可以开启很多个线程
  • Buffer 缓存区 读取文件 内存中的数据都是二进制的 默认代表二进制数据 Buffer是16进制的
  • clearInterval setInterval 宏任务
  • clearTimeout setTimeout 宏任务
  • clearImmediate setImmediate(浏览器中IE下才有) 宏任务

process

1)process.platform // 平台 mac => darwin window => win32
2)process.argv 代表用户传递的参数 默认有2个参数,前2个参数没有意义

  • 一般执行node 可以直接右键Run Code(需要安装插件)这样执行相当于node+文件名 执行
  • 通过命令+文件名+参数 就可以用argv传参 参数取值process.argv.slice(2) 从第二个参数开始取

commander:命令行的管家 帮你提供–help ,必须先安装 在命令行 执行该文件 node XXX [option]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const program = require('commander');
const chalk = require('chalk');
// 解析用户的参数 默认提供--help
program // 配置命令 我输入命令后 要执行一些内容
.command('create')
.alias('c')
.description('create project')
.action(()=>{
console.log('create project')
})
program //配置属性 给代码传递参数
.option('-p, --port <val>','set port')
.version('1.0.0')
program.on('--help',()=>{
console.log('\r\nExamples')
console.log(' node 1.js --help');
console.log(' node 1.js create '+chalk.green('project'))
}).parse(process.argv);
// chalk 粉笔
console.log(program);

3)chdir cwd()( current working directory 当前工作目录)]

1
2
3
const path = require('path');
console.log(path.resolve()); // 解析出一个绝对路径 和下面一样
console.log(process.cwd()); // 在哪里执行文件 目录就是哪里 代表的就是执行的文件的目录

4)env 环境变量

1
console.log(process.env); // 可以根据环境变量的不同执行不同的结果

5)nextTick node中的微任务 Vue.nextTick

1
2
3
4
5
6
7
8
// 微任务
Promise.resolve().then(()=>{
console.log('then');
})
process.nextTick(()=>{ // node中的微任务
console.log('nextTick')
})
// nextTick then