真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何理解JavaScript中的ES模塊

如何理解JavaScript中的ES模塊,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),印江企業(yè)網(wǎng)站建設(shè),印江品牌網(wǎng)站建設(shè),網(wǎng)站定制,印江網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,印江網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

模塊在每個(gè)編程語(yǔ)言中都能找到。它是一種能在一個(gè)代碼塊中引入另一個(gè)代碼的模塊功能的方法。這些模塊是開(kāi)發(fā)人員開(kāi)發(fā)的具有特定功能的代碼,可以在項(xiàng)目其他地方重復(fù)使用。模塊化為你提供了一些好處,比如代碼的可復(fù)用性和模塊化。

如果你之前一直在使用JavaScript開(kāi)發(fā)代碼,你就會(huì)知道早期的JavaScript沒(méi)有這樣的模塊功能。開(kāi)發(fā)者為了將js文件加載到他們的頁(yè)面中,不得不使用HTML         

                       
                    

如上圖所示,在HTML文件中,你需要在腳本標(biāo)簽中指定type="模塊",瀏覽器才會(huì)將其視為ECMAScript模塊。

兼容性

為了向后兼容,你可以在腳本標(biāo)簽中包含nomodule(其中加載的JS文件是單個(gè)打包文件)。支持ES模塊的瀏覽器會(huì)知道忽略這一點(diǎn)。這個(gè)解決方案即使在最老的瀏覽器中也能使用。Willem的回答已經(jīng)很好的解釋了這個(gè)問(wèn)題。

在上面的方案中,我們會(huì)在HTML中加入這樣的內(nèi)容。

   

如果你是在本地測(cè)試,你將需要在服務(wù)器上運(yùn)行這個(gè),因?yàn)槟銜?huì)遇到CORS問(wèn)題。請(qǐng)?jiān)谶@里閱讀更多信息。模塊以絕對(duì)或相對(duì)引用導(dǎo)入,必須以"/"、"./"或"./"開(kāi)頭。

注意:

動(dòng)態(tài)導(dǎo)入

最新的ES2020版本確實(shí)帶有動(dòng)態(tài)導(dǎo)入功能。要?jiǎng)討B(tài)導(dǎo)入模塊,導(dǎo)入關(guān)鍵字可以作為函數(shù)調(diào)用。當(dāng)以這種方式使用時(shí),它會(huì)返回一個(gè)promise。

import('/modules/library.js') .then((module) => {    // Do something with the module. }); //or using await let module = await import('/modules/library.js');

關(guān)于es模塊的詳細(xì)兼容性可以參考這里 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules#import以及https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules#export

您是否應(yīng)該選擇使用ES模塊?

對(duì)于瀏覽器來(lái)說(shuō),ES模塊是新的標(biāo)準(zhǔn)。可以開(kāi)箱即用的異步模塊加載功能,你可以獲得更快的啟動(dòng)時(shí)間以更好的性能。雖然您可以在瀏覽器中使用CommonJS與一些額外的插件,但強(qiáng)烈建議您切換到ES模塊,因?yàn)樗鼈兪菫g覽器中的原生模塊。

ES原生模塊允許您獲得單個(gè)模塊的加載,而不是單個(gè)打包文件。這是相當(dāng)有用的,它減少了加載數(shù)據(jù)的大小。瀏覽器對(duì)原生模塊的兼容性也很重要,因?yàn)樗鼪Q定了原生的ES模塊是否會(huì)被實(shí)現(xiàn),或者我們是否會(huì)回退到我們的模式,它將加載一個(gè)單一的文件。當(dāng)你得到一個(gè)單一的bundle文件時(shí),其中一個(gè)問(wèn)題是,當(dāng)你的應(yīng)用程序變得更大時(shí),bundle js文件的大小也會(huì)增加,從而影響啟動(dòng)時(shí)間和性能。你可以通過(guò)使用代碼拆分來(lái)避免這個(gè)問(wèn)題,這是現(xiàn)代打包器(如webpack)中的一個(gè)功能。但在某些情況下,我們可能會(huì)選擇模塊打包器,如webpack而不是ES模塊。如果你有CSS、圖像、字體等資產(chǎn),甚至是XML、CSV等數(shù)據(jù)文件,你可能會(huì)選擇webpack解決方案,因?yàn)閣ebpack提供了文件打包功能。

你還應(yīng)該考慮到瀏覽器對(duì)HTTP2的支持。當(dāng)你使用本地模塊時(shí),你的瀏覽器會(huì)單獨(dú)加載這些模塊。但在HTTP2的幫助下,我們可以用一個(gè)連接同時(shí)服務(wù)多個(gè)請(qǐng)求,而不是發(fā)送多個(gè)HTTP請(qǐng)求。根據(jù)CanIUse的數(shù)據(jù),96.49%的瀏覽器使用HTTP2。

但是當(dāng)你開(kāi)發(fā)一個(gè)應(yīng)用程序時(shí),即使是剩下的3.51%也應(yīng)該滿足,那么你可能會(huì)想改用webpack。這是因?yàn)槿绻銏?jiān)持使用原生的ES模塊,你的應(yīng)用程序?qū)⑿枰l(fā)送幾個(gè)HTTP請(qǐng)求來(lái)加載每個(gè)單獨(dú)的模塊。

在Node中,情況就完全不同了。由于該功能仍被標(biāo)記為實(shí)驗(yàn)性的,所以你最好堅(jiān)持使用CommonJS。不過(guò)你還是可以嘗試一下ES模塊。你可以在這里查看上面例子的源代碼。你也可以在這里查看實(shí)時(shí)演示。

關(guān)于如何理解JavaScript中的ES模塊問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


新聞標(biāo)題:如何理解JavaScript中的ES模塊
文章鏈接:http://weahome.cn/article/jochog.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部