es6中的模組即使乙個包含js**的檔案,在這個模組中所有的變數都是對其他模組不可見的,除非我們匯出它。es6的模組系統大致分為匯出(export)和匯入(import)兩個模組。
你可以匯出
所有的最外層函式
、類
以及var
、let
或const
宣告的變數。
es6模組只支援靜態匯入和匯出,你只可以在模組的最外層作用域使用import
和export
,不可在條件語句中使用,也不能在函式作用域中使用import
。所有匯出的識別符號一定要在源**中明確地匯出它們的名稱,你不能通過編寫**遍歷乙個陣列然後用資料驅動的方式匯出一堆名稱。如下匯出是錯誤的。
//錯誤示例
function squre() {};
if(true) ;
}
es6的匯出分為名字匯出和預設匯出
名字匯出可以在模組中匯出多個宣告。
//------ lib.js ------
export const sqrt = math.sqrt;
export function square(x)
export function add (x, y)
//------ main.js ------
import from 'lib';
console.log(square(10)); //100
console.log(add(2,4)); //6
這樣匯入的變數名必須和匯出的名稱一致。以上對於每乙個要匯出的變數都加了export,我們也可以直接匯出乙個列表,例如上面的lib.js可以改寫成:
//------ lib.js ------
const sqrt = math.sqrt;
function square(x)
function add (x, y)
export
export
列表可以在模組檔案最外層作用域的每一處宣告,不一定非要把它放在模組檔案的末尾。
也可以直接匯入整個模組,此時的main.js模組將變成這樣。
//------ main.js ------
import * as lib from 'lib';
console.log(lib.square(10)); //100
console.log(lib.add(2,4)); //6
乙個模組只能有乙個預設匯出,對於預設匯出,匯入的名稱可以和匯出的名稱不一致,這對於匯出匿名函式或類非常有用。
//------ myfunc.js ------
export default function() ;
//------ main.js ------
import myfunc from 'myfunc';
myfunc();
注意這裡預設匯出不需要用{}。
當然也可以使用混合的匯出。
//------ lib.js ------
export default function() ;
export function each() ;
//------ main.js ------
import _, from 'lib';
為了解決匯出命名衝突的問題,es6為你提供了重新命名的方法解決這個問題,當你在匯入名稱時可以這樣做:
// 這兩個模組都會匯出以`flip`命名的東西。
// 要同時匯入兩者,我們至少要將其中乙個的名稱改掉。
import from "eggs.js";
import from "real-estate.js";
同樣,當你在匯出的時候也可以重新命名。你可能會想用兩個不同的名稱匯出相同的值,這樣的情況偶爾也會遇到:
function v1()
function v2()
export ;
對於預設匯出,只是匯出了乙個特殊的名字叫 default,你也可以就直接用他的名字,把它當做命名匯出來用,下面兩種寫法是等價的:
import from 'lib';
import foo from 'lib';
也可以把名稱as為default來預設匯出:
//------ module1.js ------
export default 123;
//------ module2.js ------
const d = 123;
export ;
有時候為了避免上層模組匯入太多的模組,我們可能使用底層模組作為中轉,直接匯出另乙個模組的內容如下:
//------ myfunc.js ------
export default function() ;
//------ lib.js ------
export * from 'myfunc';
export function each() ;
//------ main.js ------
import myfunc, from 'lib';
這樣main.js只需匯入lib模組即可,雖然myfunc模組從lib模組匯出,但是lib卻不能使用myfunc模組的內容。 ES6模組之export和import詳解
es6中的模組即使乙個包含js 的檔案,在這個模組中所有的變數都是對其他模組不可見的,除非我們匯出它。es6的模組系統大致分為匯出 export 和匯入 import 兩個模組。你可以匯出所有的最外層 函式 類以及var let或const宣告的變數。es6模組只支援靜態匯入和匯出,你只可以在模組的...
ES6的export模組 import模組
參考 es6的模組分為匯出 export 和匯入 import 兩個模組 1 es6模組自動開啟嚴格模式,不管你有沒有在模組頭部加use strict 2 模組可以匯入匯出各種型別的變數,如函式 物件 字串 陣列 布林值 類等 3 每個模組都有自己的上下文,每個模組內宣告的變數都是區域性變數,不會汙...
ES6模組的import和export用法總結
es6之前已經出現了js模組載入的方案,最主要的是commonjs和amd規範。commonjs主要應用於伺服器,實現同步載入,如nodejs。amd規範應用於瀏覽器,如requirejs,為非同步載入。同時還有cmd規範,為同步載入方案如seajs。es6在語言規格的層面上,實現了模組功能,而且實...