在建立JavaScript模組時,export 語句用於從模組中匯出函式、物件或原始值,以便其他程式可以通過 import 語句使用它們
Export
1、export命令用於規定模組的對外介面,import命令用於輸入其他模組提供的功能
2、無論是否宣告,匯出的模組都處於嚴格模式。 export語句不能用在嵌入式指令碼中
3、export 命令可以出現在模組的任何位置
一個模組就是一個JS
檔案,該檔案內的所有變數,外部無法直接讀取。要想希望讀取該模組內的某一變數的話,該怎麼辦?那就需要在模組內部使用export
關鍵字,輸出某些變數。
那麼問題來了怎麼使用呢?我們知道export
可以匯出函式物件或者原始值,下面就瞭解一下正確姿勢。
匯出單個特性
舉例:某些情況下我們定義一些常量提供給外部使用
//constant.js
export const APP_SCENE = 'dev';
export const HOST_NAME = 'http://www.dev.com';
錯誤的寫法:介面名與模組內部變數之間,沒有建立一一對應的關係
const APP_SCENE = 'dev';
const HOST_NAME = 'http://www.dev.com';
export APP_SCENE;
export HOST_NAME;
匯出列表
舉例:我們在做專案的時候會提供一些公共函式
//util.js
let array_max = arr => Math.max(...arr);
let array_min = arr => Math.min(...arr);
let array_chunk = (arr,size) => Array.from(
{length:Math.ceil(arr.length/size)},
(v,i)=>arr.slice(i * size, i * size + size)
);
export {array_max,array_min,array_chunk};
推薦在檔案尾部使用這種方式,這樣模組匯出了哪些變數可以一目瞭然
重新命名匯出
舉例:上列情況下,看著下劃線彆扭,想以駝峰式的名字
export {array_max as arrayMax,array_min as arrayMin,array_chunk as arrayChunk};
as
的實質就是將匯出的介面和模組內部的變數建立一一對應關係
匯出預設值
1、在一個檔案或模組中,export、import 可以有多個,export default 僅有一個
2、export default 中的 default 是對應的匯出介面變數
3、通過 export 方式匯出,在匯入時要加{ },export default 則不需要
舉例: vue 的元件化
//component.vue
export default {
el:'#app',
props:{
names:{
type:Array,
default(){
return [];
},
},
},
data(){
return {
message:'super hero',
}
},
methods:{
sayLikeYou:() => 'like you',
},
}
Import
- 只讀屬性:不允許在載入模組的指令碼里面,改寫介面的引用指向,即可以改寫 import 變數型別為物件的屬性值,不能改寫 import 變數型別為基本型別的值。
- 單例模式:多次重複執行同一句 import 語句,那麼只會執行一次,而不會執行多次。import 同一模組,宣告不同介面引用,會宣告對應變數,但只執行一次 import
- import 命令會提升到整個模組的頭部,首先執行
根據我們上面定義的三個檔案 ,我們使用 import 功能
import {APP_SCENE,HOST_NAME} from 'constant.js'
import {array_chunk} from 'util.js'
import component from 'component.vue'
//other code