node模块化
模块化原理
//node底层代码
var module = {
exports:{
foo:'bar',
add:function(){
}
}
}
//为了简化操作,模块中还有一句代码
var exports = module.exports;
//但是最后return module.exports
//所以当赋值exports='xx',最后返回的是{};
模块化加载方式
- 核心模块
- 核心模块已经已经被编译到二进制文件中了,我们只需要按照名字加载就可以了
- 例如 :
require('fs')
- 第三方模块
- 以加载
jquery
为例require('jquery')
- 首先在加载模块文件同级目录下找
node_modules
目录,如果没有,则一层一层向上找,直到找到磁盘根目录,没有找到就报错,Cannot find module 'jquery'
- 然后找到
node_modules/jquery
的package.json文件下的main
属性,其属性值为入口文件模块,然后进行加载;如果不存在main
属性或者为空、或者不存在package.json
文件,则找node_modules/jquery/index.js
文件加载
- 以加载
模块查找机制
- 优先从缓存加载
- 核心模块
- 路径形式的文件模块
- 第三方模块