補充了一些之前不太注意到的知識點,參考阮一峰的文章:https://es6.ruanyifeng.com/#docs/module
目錄
import()函式和import命令不同
import()的一些適用場合
模塊化思想
Promise
async
跨模塊常量
const宣告的常量只在當前代碼塊有效,如果想設定跨模塊的常量(即跨多個檔案),或者說一個值要被多個模塊共享,可以采用下面的寫法:

import()函式和import命令不同
import()函式類似于require(),動態加載,運行時加載,也就是說,什么時候運行到這一句,就會加載指定的模塊,import()回傳一個 Promise 物件,
===》運用:vue路由的路由懶加載,const course = () => import(/* webpackChunkName: "academy" */ "@/views/academy/course");
import命令和export命令都是編譯時加載,ES6 模塊的設計思想是盡量的靜態化,使得編譯時就能確定模塊的依賴關系,以及輸入和輸出的變數,效率高,
es6模塊之中,頂層的this關鍵字回傳undefined,而不是指向window,也就是說,在模塊頂層使用this關鍵字,是無意義的,
import()的一些適用場合
(1)按需加載,
import()可以在需要的時候,再加載某個模塊,
button.addEventListener('click', event => {
import('./dialogBox.js')
.then(dialogBox => {
dialogBox.open();
})
.catch(error => {
/* Error handling */
})
});
上面代碼中,import()方法放在click事件的監聽函式之中,只有用戶點擊了按鈕,才會加載這個模塊,
(2)條件加載
import()可以放在if代碼塊,根據不同的情況,加載不同的模塊,
if (condition) {
import('moduleA').then(...);
} else {
import('moduleB').then(...);
}
上面代碼中,如果滿足條件,就加載模塊 A,否則加載模塊 B,
模塊化思想
ES6 將全域方法parseInt()和parseFloat(),移植到Number物件上面,行為完全保持不變,
這樣做的目的,是逐步減少全域性方法,使得語言逐步模塊化,
Promise
Promise物件在創建之后會立刻執行,因此一般的做法是使用一個函式進行包裝,然后return一個promise物件
function betray(){
return new Promise(function(resolve,reject){
...//異步操作
})
}
async
如果在async函式中拋出了錯誤,則終止錯誤結果,不會繼續向下執行,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/249802.html
標籤:區塊鏈
