ES6 在語言標準的層面上,實現了模塊功能,並且實現得至關簡單,旨在成爲瀏覽器和服務器通用的模塊解決方案。其模塊功能主要由兩個命令構成:export 和 import。export命令用於規定模塊的對外接口,import命令用於輸入其餘模塊提供的功能。node
/** 定義模塊 math.js **/ var n = 1; function add(){ return 2+3 } export { n, add } /** 引用模塊 main.js**/ import { n , add } from './math.js'
如上例所示,使用import命令的時候,用戶須要知道所要加載的變量名或函數名。其實ES6還提供了export default命令,爲模塊指定默認輸出,對應的import語句不須要使用大括號。這也更趨近於ADM的引用寫法。瀏覽器
/** export default 定義輸出 math.js**/ //輸出 export default { basicNum, add }; /** 引用模塊 main.js**/ //引入 import math from ‘./math‘; alert(math.n); math.add(); }
Node.js是commonJS規範的主要實踐者,它有四個重要的環境變量爲模塊化的實現提供支持:module、exports、require、global。實際使用時,用module.exports定義當前模塊對外輸出的接口(不推薦直接用exports),用require加載模塊。
//定義模塊 math.js var n = 0; function add(a, b) { return a + b; } module.exports = { //在這裏寫上須要向外暴露的函數、變量 add: add, n: n } /** 引入模塊 require **/ //引用自定義的模塊時,參數包含路徑,可省略.js var math = require(‘./math‘); math.add(2, 5); //引用核心模塊時,不須要帶路徑 var http = require(‘http‘); http.createService(...).listen(3000);
import * as obj from 'nav' // node 會試着去尋找 node_modules/nav.js 文件,若是沒有找到會接着找 nav 文件夾,若是文件夾存在,會找文件夾內的index.js文件,找不到就會報錯 // 正確寫法 import * as obj from './exports'