亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

webapck 2的代碼分片

iKcamp / 3512人閱讀

摘要:前端的代碼分片,或者說是按需加載,本質(zhì)上是由于前端頁面越來越復(fù)雜,代碼體積越來越大,程序員需要對(duì)頁面資源的加載做細(xì)粒度的控制。這里需要說一下的是的第三參數(shù),是這個(gè)分片的。

前端的代碼分片,或者說是按需加載,本質(zhì)上是由于前端頁面越來越復(fù)雜,代碼體積越來越大,程序員需要對(duì)頁面資源的加載做細(xì)粒度的控制。按需加載當(dāng)然是好東西,但是會(huì)讓頁面邏輯變得更加復(fù)雜。好在webpack出現(xiàn),讓按需加載變得簡(jiǎn)單多了。

我們來做一個(gè)簡(jiǎn)單的demo,完整代碼
demo的功能很簡(jiǎn)單,單擊一個(gè)按鈕,然后去加載一個(gè)js文件并執(zhí)行。

index.html文件:


index.js文件

document.getElementById("btn").addEventListener("click",function(){
    require.ensure([],()=>{
        let hello = require("./Hello").default;
        hello();
    },"Hello")
})

Hello.js文件

export default function hello(){
    alert("hello.")
}

在 click 的事件處理函數(shù)中,通過 require.ensure標(biāo)記分割點(diǎn),然后加載Hello.js并賦值給變量hello,最后調(diào)用該方法。這里需要說一下的是require.ensure的第三參數(shù),是這個(gè)分片chunk的name。如果不加這個(gè)參數(shù),默認(rèn)會(huì)以chunkid來命名該文件。這個(gè)參數(shù)在開發(fā)環(huán)境還是很有用的,畢竟1.js的文件名,讓人很難定位文件。

由于 ES2015 Loader spec 定義了 import() 方法來在運(yùn)行時(shí)動(dòng)態(tài)的加載javascript文件,所以webpack也把import()作為split code的分割點(diǎn)。

如果想用酷炫的import()語法,還需要安裝一個(gè)插件:
npm i babel-plugin-syntax-dynamic-import --save-dev。然后,就可以把上面的 index.js文件改成:

document.getElementById("btn").addEventListener("click",function(){
   import("./Hello").then((Hello) => {
        let hello = Hello.default;
        hello();
    }).catch(err => console.log("Failed to load moment", err))
})

import()支持promise語法,所以可以用catch來處理加載文件引起的異常。但是,它也有它的弱點(diǎn),import()無法給這個(gè)文件命名(類似于require.ensure的第三個(gè)參數(shù)),這樣打包出來的文件都是用數(shù)字來標(biāo)示的,非常難以區(qū)分,在開發(fā)環(huán)境下,會(huì)使定位錯(cuò)誤變的更加困難。

此外,這兩種語法在引用文件時(shí),文件路徑都不可以是表達(dá)式。例如:

 require.ensure([],()=>{
        let path = "./Hello";
        let hello = require(path).default;
        hello();
    },"Hello")

這樣會(huì)報(bào)錯(cuò),無法正常加載文件。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/82334.html

相關(guān)文章

  • 百度地圖 osm地圖 leaflet echarts webapck組合使用時(shí)踩坑記錄

    摘要:百度地圖創(chuàng)建標(biāo)簽進(jìn)行加載使用百度地圖需要百度地圖添加擴(kuò)展,用于讓百度地圖支持地圖可能會(huì)遇見兩個(gè)問題地圖圖片錯(cuò)位忘記加載中使用的一個(gè)主要問題是默認(rèn)圖標(biāo)的加載問題,詳見另外也可以考慮使用動(dòng)態(tài)創(chuàng)建標(biāo)簽的方法,類似百度地圖加載百度地圖因?yàn)楸旧碇С值? webpack+百度地圖 創(chuàng)建 script標(biāo)簽進(jìn)行加載 export function MP(ak){ return new Prom...

    G9YH 評(píng)論0 收藏0
  • webapck將css 打包后單獨(dú)提取到一個(gè)css文件中

    webpack4 提倡, 一旦用了這個(gè), 不能使用style-loader 以及css module 安裝 npm install --save-dev mini-css-extract-plugin rules rules: [ { test: /.css$/, use: [ { loader: MiniCssExtractPlug...

    DevTTL 評(píng)論0 收藏0
  • webpack4.x升級(jí)摘要

    摘要:以為例,編寫來幫助我們完成重復(fù)的工作編譯壓縮我只要執(zhí)行一下就可以檢測(cè)到文件的變化,然后為你執(zhí)行一系列的自動(dòng)化操作,同樣的操作也發(fā)生在這些的預(yù)處理器上。的使用是針對(duì)第三方類庫使用各種模塊化寫法以及語法。 showImg(https://segmentfault.com/img/bVbtZYK); 一:前端工程化的發(fā)展 很久以前,互聯(lián)網(wǎng)行業(yè)有個(gè)職位叫做 軟件開發(fā)工程師 在那個(gè)時(shí)代,大家可能...

    levinit 評(píng)論0 收藏0
  • webpack教程

    摘要:有時(shí)候覺得一個(gè)工具的學(xué)習(xí)成本還是很大的,所以唯一的感覺就是隨隨便便放棄一個(gè)工具是多么的難。指定執(zhí)行的方法命令。這時(shí)候我們?cè)倏匆幌履夸洉?huì)多出來一個(gè)目錄說明你的處女終于破了。 嘮嘮嗑 ?前幾天在學(xué)習(xí)webpack時(shí),踩過很多坑,也聽過webapck是多么的嗶嗶嗶嗶~~, 本人學(xué)習(xí)的工具有很多,比如sass的初級(jí)工具compass,自動(dòng)化工具gulp,grunt,一起其他雜七雜八的工具。有時(shí)...

    Zhuxy 評(píng)論0 收藏0
  • vue-cli解析

    摘要:在中,設(shè)置了一些配置,代碼如下通過它的注釋,我們可以理解它在中配置了靜態(tài)路徑本地服務(wù)器配置項(xiàng)等參數(shù)。下面還有一個(gè)的對(duì)象,它是在本地服務(wù)器啟動(dòng)時(shí),打包的一些配置,代碼如下其中包括模版文件的修改,打包完目錄之后的一些路徑設(shè)置,壓縮等。 前言 這段時(shí)間,算是空出手來寫幾篇文章了。由于很久都沒有時(shí)間整理現(xiàn)在所用的東西了,所以,接下來會(huì)慢慢整理出一些文檔來記錄前段時(shí)間的工作和生活。 這篇文章的主...

    KunMinX 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<