模組
社群上發展了兩套知名的模組系統,但它們並不相容: CommonJS Modules Asynchronous Module Definition (AMD)
ES6中加入了模組系統的支援,它採用了CommonJS與AMD的優點,成了未來JavaScript語言中重要的特性。
ES6的模組系統
ES6的模組是一個檔案一個模組。方便不同的模組互相取用,擴充應用程式規模,並進行良好的管理。
ES6模組使用export(輸出)與import(輸入)語句來進行模組輸出與輸入。輸出通常位於檔案最後,輸入位於最前面。
輸出與輸入
//一個檔案一個輸出
//實務上一個檔案內有一個類別,使用一個輸出
function aFunction(param){
return param * param
}
//單一輸出用default
export default aFunction
//一個檔案多個輸出
//實務上資料類型的定義會集中在一個檔案,有多個輸出
export const aString = 'test'
export function aFunction(){
console.log('function test')
}
export const aObject = {a: 1}
export class aClass {
constructor(name, age){
this.name = name
this.age = age
}
}
輸入
一種是每個要輸入的名稱都需要定在花括號之中。若只有一個輸出,就不用花括號。
另一種是使用萬用字元(*)
//第一種
//匯入在lib.js內的指定資料
import {aString, aObject, aFunction, aClass} from './lib.js'
console.log(aString)
console.log(aObject)
//第二種
//匯入所有lib.js內的匯出資料,取名mymodule
import * as myModule from './lib.js'
console.log(myModule.aString)
console.log(myModule.aObject)
Last updated
Was this helpful?