1.在ecmascript部分node和js其实是一样的,比如数据类型的定义,语法结构,内置对象 在js中的顶层对象 window 在node中的顶层对象 global 注意:在node中也没有什么window
2. 一个文件就是一个模块、 每个模块都有自己的作用域,我们使用var来申明的一个变量,他并不是全局的,而是属于当前模块下 例子: __filename : 当前文件被解析过后的绝对路径 console.log( __filename );
3.模块的使用 require('模块');
4.模块加载机制: 路径 绝对路径 相对路径 require('2.js');//加载node中的核心模块,或者是node-modules (1)首先按照加载的模块的文件名称进行查找 (2)如果没有找到,则会在模块文件名称后加上.js的后缀,进行查找 (3)如果还没有找到,则会在文件名称后加上.json的后缀,进行查找 (4)如果还没有,则会在文件名称后加上.node的后缀,进行查找 文件名称 -> .js -> .json -> .node 最后还没有、会报出错误
5.在一个模块中通过var定义的变量,其作用域范围是当前模块,外部不能够直接的访问 如果我们想一个模块能够访问另外一个模块中定义的变量,可以: (1)把变量作为global对象的一个属性,但是这样的做法是不推荐的 (2)使用模块对象 module module : 保存提供和当前模块有关的一些信息 在这个module对象,有一个子对象:exports 对象 我们可以通过这个对象把一个模块中的局部变量对象进行提供访问 在模块作用域,还有一个内置的模块对象,exports,他其实就是module.exports module.exports = [1,2,3]; //exports 和 module.exports 的指向关系已经断开了
6.__filename : 返回当前模块文件解析后的绝对路径,该属性其实并非全局的,而是模块作用域下的; __dirname : 返回当前模块文件所在目录解析后的绝对路径,该属性也不是全局的,而是模块作用域下的;