一看就懂的module.exports/exports與module.export/export default {}

1、module.exports與exports

  1. nodeJS採用commonJs規範,當前文件是一個模塊(module)私有域,經過exports屬性導出,經過require()引入模塊,經過.xx去獲取值,從而瞭解到加載某個模塊,實際上是加載該模塊的exports屬性
  2. exportsmodule.exports的別名,不要在同一個文件內同時使用兩個,不然只能獲取到module.exports的值

exports導出

// example.js
module.exports.a = '111';
module.exports.fun= function() {
 
}

// 或者寫成對象形式
module.exports = {
  a : '111',
  fun: function(){}
}

require加載

let test = require('./example.js')

console.log(test.a)
console.log(test.fun);

2、module.export/export default{}

  1. ES6中的模塊功能主要由兩個命令構成:exportimportexport命令用於規定模塊的對外接口,import命令用於輸入其餘模塊提供的功能。
  2. export命令規定的是對外的接口,必須與模塊內部的變量創建一一對應關係。意思是導出的不是一個具體的數值,而是一個對象{a: 1, b: function(){}}
  3. import命令接受一對大括號,裏面指定要從其餘模塊導入的變量名。大括號裏面的變量名,必須與被導入模塊(profile.js)對外接口的名稱相同。所以,import {}中的變量名是export {}key
  4. import命令輸入的變量都是隻讀的,由於它的本質是輸入接口。所以,模塊導出的值,只能獲取,不能夠修改

export導出

//example2.js

// 1. 直接導出某個變量或函數
export const a = 1;
export function fun() {

}

// 2. 先定義變量或者函數,再進行導出
const a = 1;
export {a};

function fun() {

}
export {fun}; 

// 3. 加別名進行導出
const a = 1;
export {a as b} // b是a的別名

// 4. export default 
注意,一個文件只能有一個default,這表明是模塊的總體輸出

import導入

// 1. 常規導入
import {a, fun} from 'example2.js'
// 2. 別名導入
import {a as b} from ...
// 3. *導入整個模塊
import * as b from ...
// 4. 前三種是module.export,此處是export default
import b from ...

console.log(a)
console.log(fun())

補充:exportimport可複合書寫,若是在一個模塊之中,先輸入後輸出,不作任何操做
export {} from ''node

相關文章
相關標籤/搜索