1. 程式人生 > >module.exports 、 exports、export、 export default的區別

module.exports 、 exports、export、 export default的區別

const con world 導入模塊 其他 用法 ack 默認 等號

module.exports和exports是屬於 CommonJS 模塊規範,export和export default是屬於ES6語法。

module.exportsexports導出模塊,用require引入模塊。

exportexport default導出模塊,import導入模塊。

Node應用由模塊組成,采用CommonJS模塊規範。根據這個規範,每個文件就是一個模塊,有自己的作用域。在一個文件裏面定義的變量、函數、類,都是私有的,對其他文件不可見。

CommonJS規範規定,每個模塊內部,module變量代表當前模塊。這個變量是一個對象,它的exports屬性(即module.exports)是對外的接口。加載某個模塊,其實是加載該模塊的module.exports屬性。

1.針對CommonJs:

使用步驟:

(1)使用module.exports導出模塊:

新建一個文件demo.js,通過module.exports輸出變量x和函數add。

var x = 1;
var add = function (val) {
  return val + x;
};
module.exports.x = x;
module.exports.add = add;

(2)使用require引入模塊

require方法用於加載模塊。

var demo = require(‘./demo.js‘);

console.log(demo.x); // 1
console.log(demo.add(1)); //
6

exports 與 module.exports

為了方便,Node為每個模塊提供一個exports變量,指向module.exports。這等同在每個模塊頭部,有一行這樣的命令。

var exports = module.exports;

exports其實是module.exports的引用 ,可以直接在exports對象上添加相關的方法。

2.ES6

通過export方式導出,在導入時要加{ },export default則不需要,使用export default命令,為模塊指定默認輸出,這樣就不需要知道所要加載模塊的變量名。

具體使用:

(1)export導出:

//demo1.js
export const str = ‘hello world‘ //
變量 export function fuunc(a){ //函數 return a+1 }
對應的導入方式:
//demo2.js
import { str, func } from ‘demo‘ //也可以分開寫兩次,導入的時候帶花括號

(2)export default

//demo1.js
export default const str = ‘hello world‘

對應的導入方式:

//demo2.js
import str from ‘demo1‘ //導入的時候沒有花括號

總結一些用法上的區別:

(1)module.exports和exports的用法是後面加一個等號,再接具體的導出

module.exports=...
exports=...

(2)export和export default的用法是後面直接接具體的導出,沒有等號.

export ...
export default ...



module.exports 、 exports、export、 export default的區別