本文所用的示例代碼在這裏javascript
模塊的導出其實是導出一個對外的接口,能夠通俗地理解爲把這段代碼共享出來,給其餘模塊使用。 一個模塊導出能夠有如下方式:java
export const a = 5;
export class A {}
export function b() {}
const c = 'my export name is default';
export default c; // 將 c 重命名爲 default
複製代碼
以上語法與下面的語法等價:frontend
const a = 5;
class A {}
function b() {}
const c = 'my export name is default';
// 統一導出
export {
a,
A,
b,
c as default // 將 c 重命名爲 default
};
複製代碼
對於上述幾種導出方式,對應的引入方式爲ui
import { a as renameA, A, b, default as d } from './module';
複製代碼
還能夠全量加載this
import * as module1 from './module';
// 若是隻是想執行所引用的模塊中的代碼,而不使用它,能夠這樣
import * from './module'
複製代碼
前面的代碼裏有 export default c
這樣的代碼,實際上是導出了一個默認的輸出內容,這樣能夠方便其餘模塊加載。spa
// module.js
const c = 'this is default content';
export default c
// index.js
import anyName from './module';
console.log(anyName); // this is default content
複製代碼
這樣使用,調用方無需知道所引用的模塊中默認的導出內容的名字,便可引入該內容。 而實際上,default 是引入模塊的一個屬性,使用全量引入時,它被包含在引入的變量中。code
// module.js
const c = 'this is default content';
export default c;
// index.js
import * as module1 from './module';
console.log(module1.default); // this is default content
複製代碼
使用as能夠對導出或者導入的內容進行重命名。接口
// 導出重命名
const a = 'My name is a, but i am renamed newA';
export { a as NewA };
// 導入重命名
import { newA as newNewA } from "./module2";
console.log(newNewA);
複製代碼
如下示例代碼中均使用 module1.js
,ip
// module1.js
export const a = 'a, maybe will be rename to newA or newNewA';
export class A {}
export function b() { console.log('I am function b'); }
const c = 'my export name is default';
export default c; // 將 c 重命名爲 default
複製代碼
普通導入導出使用以下。get
// module2.js
export { a, A, b } from './module1';
// index.js
import { a, A } from './module2';
複製代碼
導出時重命名:
// module2.js
export { a as newA, A, b } from './module1';
// index.js
import { newA, A } from './module2';
複製代碼
全量導出。
// module2.js
export * from "./module1";
// index.js
import * as module2 from './module2';
console.log(module2);
// b: function b() {}
// a: "a, maybe will be rename to newA or newNewA"
// A: function A() {}
複製代碼
注意,使用 export *
全量導出時,導出的內容不包含 default
。
導出 default
:
// module2.js
export { default } from "./module1";
// index.js
import { default as newDefault } from "./module2";
console.log(newDefault);
複製代碼