modules,就是JS的模組,我的理解就是,當有大量同類型或有關聯的資料和函數,方法需要當作一個整體展示的時候,可以單獨定義成一個module也就是模組。 Module意義就使得程式碼模組化,使你的程式碼分成一個個邏輯上獨立的子集,每個子集處理特定的功能,然後被單獨呼叫。
modules,也就是模組,自動採用嚴格模式,不管有沒有在模組頭加上“user strict”,agruments不會自動反映函數參數的變化,以及禁止this指向全域物件
modules有兩個關鍵字,Imports和Exports
Imports :用於輸入其他模組提供的功能
Exports:用來規定對外的介面
##一個模組就是一個獨立的檔案,該檔案內部所有的變量,外部無法取得,如果希望外部讀取模組內部的某個變量,就必須使用export關鍵字輸出變量,export,除了輸出變量,也可以輸出函數,class
let a='a'; let b='b'; let c='c'; export {a,b,c}
as關鍵字,將name改成a,例如:
import {name as a} from '.../xxx.js'
,import具有提升效果,不管在哪裡引用,都會被提升到整個模組的頂部,首先執行
除了指定加載某個值,也可以將整體加載,即用星號(*)指定一個對象,所有輸出值都加載在這個對像上。例如import * as a from '.../xxx.js' console.log(a.area(4)); console.log(a.cire(4));
export default,設定模組檔案的預設輸出,每個module只允許有一個預設輸出,預設輸出不需要知道模組的變數名,另外,export default不需要加大括號,因為,本質上,export default就是輸出了一個叫做default的變數或方法,然後系統允許你為它取任意名字
var name="李四"; export { name } //import { name } from "/.a.js" 可以写成: var name="李四"; export default name //import name from "/.a.js" 这里name不需要大括号
// modules.js function add(x, y) { return x * y; } export {add as default}; // 等同于 // export default add; // app.js import { default as xxx } from 'modules'; // 等同于 // import xxx from 'modules';
import {b} from '.../xxx.js' import {c} from '.../xxx.js' //等同于 import {b,c} from '.../xxx.js'