如何理解JavaScript模塊化
1. 瀏覽器支持
使用JavaScript 模塊依賴于 import 和 export,import 和 export 的瀏覽器支持程度是最新的瀏覽器版本都是支持的,但 IE 和舊版本的瀏覽器不支持,因此若想兼容 IE 和舊版本的瀏覽器基本就不能使用了。
export 和 import 是成對(duì)出現(xiàn),配合工作的
JS模塊化是各種JS框架學(xué)習(xí)的前提基礎(chǔ)
import 和 export 語(yǔ)句用于將一個(gè)模塊里實(shí)現(xiàn)某些功能的變量或函數(shù)導(dǎo)入/導(dǎo)出,也可導(dǎo)入/導(dǎo)出類
2. export 導(dǎo)出模塊
默認(rèn)導(dǎo)出
一個(gè)模塊只能有一個(gè)默認(rèn)導(dǎo)出,默認(rèn)導(dǎo)出的變量只能有一個(gè),且不能有大括號(hào){}
語(yǔ)法為export default 變量名
model.js
function Test1(){
console.log("這是默認(rèn)導(dǎo)出")
}
function Test2(){
console.log('這是命名導(dǎo)出')
}
export default Test1
批量導(dǎo)出
語(yǔ)法為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)鍵字跟一個(gè)新名字實(shí)現(xiàn)重命名
main.js
import {Test1 as x1, Test2 as x2} from "./model.js"
x1();
x2();
也可在導(dǎo)出時(shí)用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)建模塊對(duì)象
使用對(duì)象,在as關(guān)鍵字重命名的基礎(chǔ)上進(jìn)一步簡(jiǎn)單化
import * as Model from "./model.js" Model.x1(); Model.x2();
5. export import 中轉(zhuǎn)站
有時(shí)候可以將多個(gè)子模塊組合到一個(gè)父模塊中,再由父模塊決定導(dǎo)出哪個(gè),這個(gè)父模塊文件就像是個(gè)組合各個(gè)模塊的中轉(zhuǎn)站
語(yǔ)法為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. 動(dòng)態(tài)加載模塊
動(dòng)態(tài)加載模塊用于在導(dǎo)入模塊時(shí)不必預(yù)先加載所有模塊,可以在需要時(shí)使用 import() 作為函數(shù)調(diào)用,將其參數(shù)傳遞給模塊的路徑,它返回一個(gè) promise,使用 Promise 對(duì)象對(duì)模塊加載結(jié)果操作。
語(yǔ)法為import(動(dòng)態(tài)加載的模塊路徑)
dynamic.js
function TestDy(){
console.log("這是動(dòng)態(tài)模塊")
}
export default TestDy
main.js
document.querySelector('.load').onclick = function(){
import('./dynamic.js').then((Model)=>{
Model.default()
})
}
以上就是如何理解JavaScript模塊化的詳細(xì)內(nèi)容,更多關(guān)于JavaScript模塊化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript 程序錯(cuò)誤Cannot use ''in'' operator to search的解決方法
下面小編就為大家?guī)?lái)一篇JavaScript 程序錯(cuò)誤Cannot use 'in' operator to search的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-07-07
js 將圖片連接轉(zhuǎn)換成base64格式的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇js 將圖片連接轉(zhuǎn)換成base64格式的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2016-08-08
JavaScript 動(dòng)態(tài)三角函數(shù)實(shí)例詳解
本文通過實(shí)例代碼給大家實(shí)例講解了javascript動(dòng)態(tài)三角函數(shù)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-01-01
躲避這些會(huì)改變?cè)瓟?shù)組JavaScript數(shù)組方法讓開發(fā)流暢無(wú)阻
JavaScript中有些數(shù)組的操作方法并不符合我們預(yù)期,容易導(dǎo)致想象不到的結(jié)果,因此,為避免這種情況的發(fā)生,本文將介紹哪些原生數(shù)組方法能改變?cè)瓟?shù)組以及我對(duì)于如何更好地使用數(shù)組方法的建議2023-05-05
js抽獎(jiǎng)實(shí)現(xiàn)隨機(jī)抽獎(jiǎng)代碼效果
這篇文章主要介紹了js隨機(jī)抽獎(jiǎng)代碼效果,大家參考使用2013-12-12
用js實(shí)現(xiàn)每隔一秒刷新時(shí)間的實(shí)例(含年月日時(shí)分秒)
下面小編就為大家?guī)?lái)一篇用js實(shí)現(xiàn)每隔一秒刷新時(shí)間的實(shí)例(含年月日時(shí)分秒)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-10-10

