Skip to content

Latest commit

 

History

History
50 lines (34 loc) · 1.82 KB

exports、module.exports、export、export default.md

File metadata and controls

50 lines (34 loc) · 1.82 KB

适用场景

方法 node es6
require
module.exports / exports ×
export / import ×

exports 与 module.exports

  Nodejs 采用 Commonjs 模块规范。每个文件就是一个模块,有自己的作用域。在文件里面的变量,函数、类都是私有的。

  每个模块内部,都有一个 module 属性代表当前模块,module 也有个对外的接口属性 exports。加载某个模块,就是加载改模块的 module.exports 属性。

  nodejs 执行文件,会自动创建一个 module 对象,module 对象有一个 exports 属性,初始值为{}。

console.log(module.exports); // {}
console.log(exports); // {}

  exports 是指向的 module.exports 的引用,如果直接将 exports 指向一个值,就等于切断了与 module.exports 的引用关系

// util.js
exports.name = 'Staven';
exports = 'Hello';
console.log(module.exports); // { name: 'Staven' }
console.log(exports); // Hello

  每个文件模块真正是通过 module.exports 导出的模块信息的, 而 require() 返回的是 module.exports

var util = require('./util');
console.log(util);  // { name: 'Staven' }

export 与 export default

  在一个文件或模块中,export、import 可以使用多次,export default 仅有一个。

  export 导出时,import 导入需要使用{}包裹导出的对象; export default 导出时,import 可直接导入对象

  export 能直接导出变量表达式,而 export default 不能

参考: