日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
了解JavaScript中的ES模塊

本文轉(zhuǎn)載自微信公眾號「新鈦云服」,作者方章和 翻譯 。轉(zhuǎn)載本文請聯(lián)系新鈦云服公眾號。

成都創(chuàng)新互聯(lián)自2013年起,先為祁東等服務建站,祁東等地企業(yè),進行企業(yè)商務咨詢服務。為祁東企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

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

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

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

    兼容性

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

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

     
     
     
    1.  
    2.  

    如果你是在本地測試,你將需要在服務器上運行這個,因為你會遇到CORS問題。請在這里閱讀更多信息。模塊以絕對或相對引用導入,必須以"/"、"./"或"./"開頭。

    注意:

    動態(tài)導入

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

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

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

    您是否應該選擇使用ES模塊?

    對于瀏覽器來說,ES模塊是新的標準??梢蚤_箱即用的異步模塊加載功能,你可以獲得更快的啟動時間以更好的性能。雖然您可以在瀏覽器中使用CommonJS與一些額外的插件,但強烈建議您切換到ES模塊,因為它們是瀏覽器中的原生模塊。

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

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

    但是當你開發(fā)一個應用程序時,即使是剩下的3.51%也應該滿足,那么你可能會想改用webpack。這是因為如果你堅持使用原生的ES模塊,你的應用程序?qū)⑿枰l(fā)送幾個HTTP請求來加載每個單獨的模塊。

    在Node中,情況就完全不同了。由于該功能仍被標記為實驗性的,所以你最好堅持使用CommonJS。不過你還是可以嘗試一下ES模塊。你可以在這里查看上面例子的源代碼。你也可以在這里查看實時演示。我希望你明白什么是ES模塊,以及為什么需要它們。


    名稱欄目:了解JavaScript中的ES模塊
    轉(zhuǎn)載注明:http://www.5511xx.com/article/dhgcpdp.html