node--module模块--Mr.Ember

 

node--module模块node

摘要:json

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

 

1. 稳定性  模块化

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

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

 

2. 访问主模块ui

require.main === module

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

 

3. 缓存code

 模块在第一次加载后就会被缓存,屡次调用不会致使模块的代码屡次执行,能够但会'部分完成'的对象,从而容许加载依赖的模块,因此不会致使循环依赖。对象

 

4. 循环blog

 当循环调用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实际上不是全局的,而是每一个模块本地的。

相关文章
相关标签/搜索