node 模块机制

CommonJS规范为Javascript制定了一个美好的愿景--但愿Javascript可以在任何地方运行。javascript

一、CommonJS的模块规范java

1 模块引用node

var math= reuqire('math');

二、模块定义json

 node提供了exports对象用于导出当前的模块的方法或者变量。而且是惟一的导出出口。在模块中,还存在一个module对象,它表明模块自己,而exports是module的属性缓存

module.exports={}

三、模块标识ui

模块标识是传给require()方法的参数,必须符合小驼峰命名的字符串或者.、..开头的相对路径spa

 

二、Ndoe的模块实现对象

在Node中引入模块,须要经历三个步骤blog

(1)路径分析递归

(2)文件定位

(3)编译执行

核心模块部分在Node源码的编译过程当中,编译进了二进制的执行文件。在Node进行启动时,部分核心模块就被直接加载进内存了,文件定位和编译执行会被省去,而且在路径分析中优先判断,加载速度最快。

Node也会对引入的模块进行缓存,缓存的不是文件,而是编译和执行以后的对象。

自定义文件加载慢的缘由是由于 模块路径的生成规则有关

查找规则有点像js的原型和做用域链,逐级向上递归,直到根目录下的xxx.js目录。

 

小诀窍,未鉴定过(若是.node和.json的文件在传递给require()的标识符中带上扩展名,会加快一点速度)

相关文章
相关标签/搜索