Node.js模块加载过程

1.文件/模块载入

nodejs 加载模块主要用到 require,赋值到一个变量中

1
const test = require('path/test');

如果能够 require ,也就是说需要模块导出,由 module.exportsexports 完成:

1
2
3
4
5
6
7
function test() {
// ...
}
// ...
module.exports = test; // require时真正的对象
exports.test = test; // 只是对module的引用

查找顺序

如果 require 的是一个目录的话,require 会现在目录寻找 package.json 文件,如果没有就会去找 index.js 文件。如果 package.json 文件存在,则会在文件内查找 main 字段,使用 main 中定义的文件模块入口文件。

import 和 require 的区别

require、module.exports 是Node.js的私有方法,import 是 ES6 新发布的语法。实际上和结构化赋值类似,所以 import 后的参数必须要跟 export 出来的字段一致,才能成功import。

import 必须在文件的头部,而 require 不一定,因为它是编译时的,而 require 是运行时的。

用法:

1
2
3
4
5
6
7
// a.js
var a = function() {};
export {a as fun};
// b.js
import {fun as a} from './a';
a();