webpack實戰(zhàn)3之異步加載js

注意:

本文假設(shè)你有webpack 的基礎(chǔ)認識善茎。

本文的目的是異步加載js

項目結(jié)構(gòu)如下所示:

81498120603_.pic.jpg

開始實戰(zhàn)

創(chuàng)建一個目錄<code>webpack-demo3</code>,并安裝<code>wbepack</code>。

  mkdir webpack-demo3 && cd webpack-demo3
  npm init -y
  npm install --save-dev webpack

安裝<code>html-webpack-plugin</code>

npm install html-webpack-plugin --save-dev

新建<code>index.html</code>文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="root"></div>
</body>
</html>

新建<code>a.js</code>文件

module.exports=function dom(elem){
   return document.querySelector(elem)
}

新建<code>b.js</code>文件

module.exports=function say(elem){
   console.log('今天天氣真好');
}

新建<code>index.js</code>文件

require('./b')();
require.ensure([], function (require) {
    const dom = require('./a.js');
    dom('#root').innerHTML = 'hello world';
});

webpack 在構(gòu)建時,會靜態(tài)解析(statically parse)代碼中的 require.ensure()。在其中任何被引用的依賴模塊钱雷,或在回調(diào)函數(shù)中被 require() 的模塊纤房,都將被分離到一個新的 chunk 中。這個新的 chunk 會被生成為異步的 bundle暮现,由 webpack 通過 jsonp 來按需加載。

新建<code>webpack.config.js</code>文件

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry:'./index.js',
    output:{
        filename:'bundle.js',
        path:path.resolve(__dirname,'dist')
    },
    plugins:[
        new HtmlWebpackPlugin({
            template:'index.html',
            filename:'index.html',
            inject:'body'
        })
    ]
}

HtmlWebpackPlugin該插件將所有生成的js文件自動引入index.html中楚昭。當(dāng)文件名帶有hash值時栖袋,這個插件尤其有用。
HtmlWebpackPlugin會根據(jù)模版生成一個新的html文件哪替。

打包代碼:‘

webpack --config webpack.config.js 

你會發(fā)現(xiàn)在dist文件夾中栋荸,生成了0.bundle.js,bundle.js,index.html

查看每個文件,你會發(fā)現(xiàn)凭舶,b.js和index.j的代碼被打包到了bundle.js中晌块。而a.js中的代碼被打包到了0.bundle.js。
index.html中只包含了一個script標(biāo)簽( <script type="text/javascript" src="bundle.js"></script>)帅霜,因為0.bundle.js將通過bundle.js異步加載匆背。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市身冀,隨后出現(xiàn)的幾起案子钝尸,更是在濱河造成了極大的恐慌,老刑警劉巖搂根,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件珍促,死亡現(xiàn)場離奇詭異,居然都是意外死亡剩愧,警方通過查閱死者的電腦和手機猪叙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人穴翩,你說我怎么就攤上這事犬第。” “怎么了芒帕?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵歉嗓,是天一觀的道長。 經(jīng)常有香客問我背蟆,道長鉴分,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任带膀,我火速辦了婚禮冠场,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘本砰。我一直安慰自己,他們只是感情好钢悲,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布点额。 她就那樣靜靜地躺著,像睡著了一般莺琳。 火紅的嫁衣襯著肌膚如雪还棱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天惭等,我揣著相機與錄音珍手,去河邊找鬼。 笑死辞做,一個胖子當(dāng)著我的面吹牛琳要,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秤茅,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼稚补,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了框喳?” 一聲冷哼從身側(cè)響起课幕,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎五垮,沒想到半個月后乍惊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡放仗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年润绎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡凡橱,死狀恐怖小作,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情稼钩,我是刑警寧澤顾稀,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站坝撑,受9級特大地震影響静秆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巡李,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一抚笔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侨拦,春花似錦殊橙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至季研,卻和暖如春敞葛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背与涡。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工惹谐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驼卖。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓氨肌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親款慨。 傳聞我的和親對象是個殘疾皇子儒飒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • GitChat技術(shù)雜談 前言 本文較長,為了節(jié)省你的閱讀時間檩奠,在文前列寫作思路如下: 什么是 webpack桩了,它要...
    蕭玄辭閱讀 12,697評論 7 110
  • 最近在學(xué)習(xí) Webpack,網(wǎng)上大多數(shù)入門教程都是基于 Webpack 1.x 版本的,我學(xué)習(xí) Webpack 的...
    My_Oh_My閱讀 8,184評論 40 247
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看埠戳,也希望更多的人看到...
    小小字符閱讀 8,168評論 7 35
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,470評論 2 71
  • 朋友有很多種。關(guān)系好也有很多種好法。有相同愛好在岂,有共同語言奔则,三觀有共鳴,曾經(jīng)幫助過我蔽午,或者參與了我人生中一段難忘的...
    Sunny小夕呀閱讀 900評論 0 0