环境:
Node应用由模块组成,采用CommonJS模块规范。
node的全局对象是global,没有window这个对象。
process表示当前执行的进程,挂在global之下。
CommonJS
每个文件是一个模块,有自己的作用域。执行时,我们写的代码会被自动包裹在一个function里。
在模块内部module变量代表模块本身。
module.exports属性代表模块对外接口。
定义一个模块就是创建一个文件。
想在模块内部输出一些属性的话,需要把属性放到module.exports中。
require规则
/表示绝对路径,./表示相对与当前文件的。
只是js,json,node扩展名,如果我们不写模块的扩展名,会依次尝试,都找不到就报错。
不写路径就认为时build-in模块或者各级node-modules内的第三方模块。
require的特性
module被加载的时候会执行,然后缓存下来。 不会重复加载,即使require了多次。
某个模块出现循环加载的时候,只输出已执行的部分,还未执行的部分不会输出。
//05a.js
module.exports.test = 'A'
const modB = require('./05b')
console.log('modA:',modB.test)
module.exports.test = 'AA'
//05b.js
module.exports.test = 'B'
const modA = require('./05a')
console.log('modB:',modA.test)
module.exports.test = 'BB'
//05.js
const modA = require('./05a')
const modB = require('./05b')
//output:
modB:A
modA:BB
global全局变量下的一些属性
CommonJS, process, console, Buffer, timer
process常用属性
argv:数组
argv0:argv的第0项
execArgv:数组
execPath:argv的第1个参数
cwd():返回当前路径
nextTick()插到队尾