ES6模組化的import和export用法方法總結,es6export
ES6之前已經出現了js模組載入的方案,最主要的是CommonJS和AMD規範。commonjs主要應用於伺服器,實現同步載入,如nodejs。AMD規範應用於瀏覽器,如requirejs,為非同步載入。同時還有CMD規範,為同步載入方案如seaJS。
ES6在語言規格的層面上,實現了模組功能,而且實現得相當簡單,完全可以取代現有的CommonJS和AMD規範,成為瀏覽器和伺服器通用的模組解決方案。
ES6模組主要有兩個功能:export和import
export用於對外輸出本模組(一個檔案可以理解為一個模組)變數的介面
import用於在一個模組中載入另一個含有export介面的模組。
也就是說使用export命令定義了模組的對外介面以後,其他JS檔案就可以通過import命令載入這個模組(檔案)。如(假設a和b檔案在同一目錄下)
// a.jsvar sex="boy";var echo=function(value){ console.log(value)}export {sex,echo} //通過向大括弧中添加sex,echo變數並且export輸出,就可以將對應變數值以sex、echo變數標識符形式暴露給其他檔案而被讀取到//不能寫成export sex這樣的方式,如果這樣就相當於export "boy",外部檔案就擷取不到該檔案的內部變數sex的值,因為沒有對外輸出變數介面,只是輸出的字串。
// b.js通過import擷取a.js檔案的內部變數,{}括弧內的變數來自於a.js檔案export出的變數標識符。import {sex,echo} from "./a.js" console.log(sex) // boyecho(sex) // boy
a.js檔案也可以按如下export文法寫,但不如上邊直觀,不太推薦。
// a.jsexport var sex="boy";export var echo=function(value){ console.log(value)}//因為function echo(){}等價於 var echo=function(){}所以也可以寫成export function echo(value){ console.log(value)}
以上是export與module的基本用法,再進行拓展學習
前面的例子可以看出,b.js使用import命令的時候,使用者需要知道a.js所暴露出的變數標識符,否則無法載入。可以使用export default命令,為模組指定預設輸出,這樣就不需要知道所要載入模組的變數名。
//a.jsvar sex="boy";export default sex(sex不能加大括弧)//原本直接export sex外部是無法識別的,加上default就可以了.但是一個檔案內最多隻能有一個export default。其實此處相當於為sex變數值"boy"起了一個系統預設的變數名default,自然default只能有一個值,所以一個檔案內不能有多個export default。
// b.js本質上,a.js檔案的export default輸出一個叫做default的變數,然後系統允許你為它取任意名字。所以可以為import的模組起任何變數名,且不需要用大括弧包含import any from "./a.js"import any12 from "./a.js" console.log(any,any12) // boy,boy
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。