node--module模块--Mr.Ember

node--module模块

摘要:

主要是从module的几个特性讲解

1. 稳定性  

export.a = function() {};
export.b = function() {};

这里两个函数都是被添加到exports根部的对象上,模块内本地变量是私有的。

2. 访问主模块

require.main === module

如果直接用node执行某个文件,那这个文件就是主模块,默认被赋值给require.main。

3. 缓存

 模块在第一次加载后就会被缓存,多次调用不会导致模块的代码多次执行,可以但会'部分完成'的对象,从而允许加载依赖的模块,所以不会导致循环依赖。

4. 循环

 当循环调用require()时,一个模块可能在未完成执行时被返回。

执行顺序:
       main.js
       b.js
       a.js
       b.js ->done
       a.js ->done
       main.js -> done

5. 目录作为模块

 require()寻找路径先通过寻找package.json中的main模块,在根据main模块的路径,寻找当前所在的路径位置

6. 模块包装器(划重点

 在执行代码前,node.js会使用下面这个函数把文件包装起来

(function(exports, require, module, __filename, __dirname) {

  //.......真正要执行的部分

})

包装的原因

(1)保证定义的变量的模块化

(2)提供一些看似全局,但实际上是模块特定的变量

7. 模块的作用域

 (1) __dirname: 当前木块的目录

 (2)__filename: 当前木块的文件名(局对路径)

 (3)exports: exports虽然是module.exports的简写,但是一旦 exports被赋值,module.exports就无法改变这个值了

 (4)module: 在每个模块中,module 的自由变量是一个指向表示当前模块的对象的引用。 为了方便,module.exports 也可以通过全局模块的 exports 对象访问。 module实际上不是全局的,而是每个模块本地的。

猜你喜欢

转载自www.cnblogs.com/teteWang-Ember/p/10217109.html