ES6模塊的import和export用法總結

ES6模塊的import和export用法總結

 

ES6以前已經出現了js模塊加載的方案,最主要的是CommonJS和AMD規範。commonjs主要應用於服務器,實現同步加載,如nodejs。AMD規範應用於瀏覽器,如requirejs,爲異步加載。同時還有CMD規範,爲同步加載方案如seaJS。html

ES6在語言規格的層面上,實現了模塊功能,並且實現得至關簡單,徹底能夠取代現有的CommonJS和AMD規範,成爲瀏覽器和服務器通用的模塊解決方案。node

ES6模塊主要有兩個功能:export和import瀏覽器

export用於對外輸出本模塊(一個文件能夠理解爲一個模塊)變量的接口服務器

import用於在一個模塊中加載另外一個含有export接口的模塊。異步

也就是說使用export命令定義了模塊的對外接口之後,其餘JS文件就能夠經過import命令加載這個模塊(文件)。以下圖(假設a和b文件在同一目錄下)requirejs

 
// a.js
var 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) // boy
echo(sex) // boy

a.js文件也能夠按以下export語法寫,但不如上邊直觀,不太推薦。post

 
// a.js
export 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命令,爲模塊指定默認輸出,這樣就不須要知道所要加載模塊的變量名。ui

//a.js
var sex="boy"; export default sex(sex不能加大括號)
//本來直接export sex外部是沒法識別的,加上default就能夠了.可是一個文件內最多隻能有一個export default。
其實此處至關於爲sex變量值"boy"起了一個系統默認的變量名default,天然default只能有一個值,因此一個文件內不能有多個export default。
 
// b.js
本質上,a.js文件的輸出一個叫作的變量,而後系統容許你爲它取任意名字。因此能夠爲import的模塊起任何變量名,且不須要用大括號包含 import any from "./a.js"import any12 from "./a.js" console.log(any,any12) // boy,boyexport defaultdefault
相關文章
相關標籤/搜索