如何理解JavaScript模塊化
1. 瀏覽器支持
使用JavaScript 模塊依賴于 import 和 export,import 和 export 的瀏覽器支持程度是最新的瀏覽器版本都是支持的,但 IE 和舊版本的瀏覽器不支持,因此若想兼容 IE 和舊版本的瀏覽器基本就不能使用了。
export 和 import 是成對出現(xiàn),配合工作的
JS模塊化是各種JS框架學(xué)習(xí)的前提基礎(chǔ)
import 和 export 語句用于將一個模塊里實現(xiàn)某些功能的變量或函數(shù)導(dǎo)入/導(dǎo)出,也可導(dǎo)入/導(dǎo)出類
2. export 導(dǎo)出模塊
默認(rèn)導(dǎo)出
一個模塊只能有一個默認(rèn)導(dǎo)出,默認(rèn)導(dǎo)出的變量只能有一個,且不能有大括號{}
語法為export default 變量名
model.js
function Test1(){ console.log("這是默認(rèn)導(dǎo)出") } function Test2(){ console.log('這是命名導(dǎo)出') } export default Test1
批量導(dǎo)出
語法為export {變量名,變量名……}
function Test1(){ console.log("這是默認(rèn)導(dǎo)出") } function Test2(){ console.log('這是命名導(dǎo)出') } export {Test1, Test2}
3. import 導(dǎo)入模塊
默認(rèn)導(dǎo)入
main.js
import Test1 from "./model.js" Test1()
默認(rèn)導(dǎo)入的重命名
main.js
import x from "./model.js"http://x就是默認(rèn)導(dǎo)出的Test1 x()
批量導(dǎo)入
main.js
import {Test1, Test2} from "./model.js" Test1(); Test2();
批量導(dǎo)入的重命名
as關(guān)鍵字跟一個新名字實現(xiàn)重命名
main.js
import {Test1 as x1, Test2 as x2} from "./model.js" x1(); x2();
也可在導(dǎo)出時用as關(guān)鍵字重命名
model.js
function Test1(){ console.log("這是默認(rèn)導(dǎo)出") } function Test2(){ console.log('這是命名導(dǎo)出') } export {Test1 as x1, Test2 as x2}
應(yīng)用模塊
html
<script src="main.js"></script>
4. 創(chuàng)建模塊對象
使用對象,在as關(guān)鍵字重命名的基礎(chǔ)上進一步簡單化
import * as Model from "./model.js" Model.x1(); Model.x2();
5. export import 中轉(zhuǎn)站
有時候可以將多個子模塊組合到一個父模塊中,再由父模塊決定導(dǎo)出哪個,這個父模塊文件就像是個組合各個模塊的中轉(zhuǎn)站
語法為export {變量名} from 模塊路徑
當(dāng)前目錄結(jié)構(gòu)結(jié)構(gòu)
src
index.html
main.js
redirection.js
models
model.js
model2.js
model.js
function Test1(){ console.log("這是子模塊1") } export {Test1}
model2.js
function Test2(){ console.log('這是子模塊2') } export {Test2}
redirection.js
export {Test1} from "./models/model.js" export {Test2} from "./models/model2.js"
main.js
import * as Model from "./redirection.js" Model.Test1() Model.Test2()
html
<script src="./main.js"></script>
6. 動態(tài)加載模塊
動態(tài)加載模塊用于在導(dǎo)入模塊時不必預(yù)先加載所有模塊,可以在需要時使用 import() 作為函數(shù)調(diào)用,將其參數(shù)傳遞給模塊的路徑,它返回一個 promise,使用 Promise 對象對模塊加載結(jié)果操作。
語法為import(動態(tài)加載的模塊路徑)
dynamic.js
function TestDy(){ console.log("這是動態(tài)模塊") } export default TestDy
main.js
document.querySelector('.load').onclick = function(){ import('./dynamic.js').then((Model)=>{ Model.default() }) }
以上就是如何理解JavaScript模塊化的詳細內(nèi)容,更多關(guān)于JavaScript模塊化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JS對象轉(zhuǎn)換為Jquery對象實現(xiàn)代碼
很多新手朋友們都不知道js對象如何轉(zhuǎn)換為jquery對象,其實很簡單,下面有個不錯的示例,感興趣的朋友可以參考下2013-12-12Layui table 組件的使用之初始化加載數(shù)據(jù)、數(shù)據(jù)刷新表格、傳參數(shù)
這篇文章主要介紹了Layui table 組件的使用之初始化加載數(shù)據(jù)、數(shù)據(jù)刷新表格、傳參數(shù)的實現(xiàn)代碼,需要的朋友可以參考下2017-09-09JavaScript 擴展運算符用法實例小結(jié)【基于ES6】
這篇文章主要介紹了JavaScript 擴展運算符用法,結(jié)合實例形式總結(jié)分析了基于ES6的擴展運算符基本概念與使用相關(guān)操作技巧,需要的朋友可以參考下2019-06-06如何解決日期函數(shù)new Date()瀏覽器兼容性問題
這篇文章主要介紹了如何解決日期函數(shù)new Date()瀏覽器兼容性問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09使用Promise和JavaScript有效處理1000個請求的方法
在現(xiàn)代Web開發(fā)中,處理高并發(fā)請求是一個常見的挑戰(zhàn),當(dāng)我們需要從服務(wù)器獲取大量數(shù)據(jù)或執(zhí)行多個異步任務(wù)時,如何有效地管理請求的并發(fā)性和性能變得至關(guān)重要,本文將介紹如何使用Promise和JavaScript來管理高并發(fā)請求,需要的朋友可以參考下2023-09-09微信小程序如何修改radio和checkbox的默認(rèn)樣式和圖標(biāo)
這篇文章主要介紹了微信小程序修改radio和checkbox的默認(rèn)樣式和圖標(biāo),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07javascript刪除數(shù)組元素并且數(shù)組長度減小的簡單實例
本篇文章主要是對javascript刪除數(shù)組元素并且數(shù)組長度減小的簡單實例進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-02-02