1、module.exports和exports的区别
言而总之,总而言之是一个东西
const exports = module.exports。(node在加载的时候默认执行这一句)
对外暴露只能是module.exports。
就是一个指向,但是如果指向改变,就不代表module.exports向外暴露接口的意思了。
2、global对象
CommonJS
Buffer(二进制的处理)、process(进程)、console
timer(setTimer)
想要定义一个全局变量就用global.变量名
3、process进程
(1) 参数相关
// 参数相关:nodejs启动时看启动参数,大括号里的是process的子对象
const {argv, argv0, execArgv, execPath} = process;
// argv:在启动process的所有参数 - 这个是最重要的
argv.forEach(item => {
console.log(item);
/**
* 输出内容
* D:\worksoft\nodejs\node.exe(node安装的路径)
* F:\my_workspace\node_study\04_process.js(当前执行文件的路径)
* >node 04_process.js a=2(这样启动)
* 会输出: D:\worksoft\nodejs\node.exe
* F:\my_workspace\node_study\04_process.js
* a=2
*/
});
/**
* 输出结果:老师说这个不是经常使用的, node
*/
console.log("老师说这个不是经常使用的,",argv0);
/**
* 这个好像也不是很重要,是在node 和文件名的中间输入一个东西,没有特别理解
* 我去百度了一下:
* 与 process.argv 类似,不过是用于返回 node特殊(node-specific) 的命令行选项(参数)。另外所有文件名之后的参数都会被忽视
*/
console.log(execArgv);
/**
* 这个就是argv打印出来的第一行
*/
console.log(execPath);
(2)环境(会输出一堆环境相关的信息)
const {env} = process;
console.log(env);
(3)cwd(与linux的pwd功能一样滴)
console.log(process.cwd());
4、process.nextTick和setImmediate
setImmediate(() => {
console.log("setImmediate");
});
process.nextTick(() => {
console.log("nextTick");
});
setTimeout(() => {
console.log("setTimeout");
},0);
执行结果:
nextTick
setTimeout
setImmediate
nextTick:放在当前队列的最后一个位置(vue里面也有一个,是dom加载完成执行)
setImmediate:放在下个队列的队首
setTimeout:在nextTick和setImmediate中间