webpack打包后的文件如何在瀏覽器中運(yùn)行

一起探索最真實(shí)的世界

webpack是啥

webpack 是一個(gè)現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)屿讽。當(dāng) webpack 處理應(yīng)用程序時(shí),它會遞歸地構(gòu)建一個(gè)依賴關(guān)系圖(dependency graph)寒屯,其中包含應(yīng)用程序需要的每個(gè)模塊,然后將所有這些模塊打包成一個(gè)或多個(gè) bundle需频。
webpack

最簡單的??

const path = require('path');

module.exports = {
  // JS 執(zhí)行入口文件
  entry: './main.js',
  output: {
    // 把所有依賴的模塊合并輸出到一個(gè) bundle.js 文件
    filename: 'bundle.js',
    // 輸出文件都放到 dist 目錄下
    path: path.resolve(__dirname, './dist'),
  }
};

以上是webpack.config.js的配置,非常簡單俊柔,只配置了entry(入口)和ouput(輸出)
我們的目錄如下

|-- index.html
|-- main.js
|-- show.js
|-- webpack.config.js

index.html

<html>
<head>
  <meta charset="UTF-8">
</head>
<body>
<div id="app"></div>
<!--導(dǎo)入 webpack 輸出的 JS 文件-->
<script src="./dist/bundle.js"></script>
</body>
</html>

main.js

// 通過 CommonJS 規(guī)范導(dǎo)入 show 函數(shù)
const show = require('./show.js');
// 執(zhí)行 show 函數(shù)
show('Webpack');

show.js

// 操作 DOM 元素睛蛛,把 content 顯示到網(wǎng)頁上
function show(content) {
  window.document.getElementById('app').innerText = 'Hello,' + content;
}

// 通過 CommonJS 規(guī)范導(dǎo)出 show 函數(shù)
module.exports = show;

運(yùn)行下

webpack

webpack打包后,根目錄下dist目錄下

|-- dist/
|---- bundle.s

bundel.js

 (function (modules) { 
   //  webpack啟動(dòng)函數(shù)文判,modules就是webpack根據(jù)入口文件進(jìn)行依賴解析后的模塊數(shù)組过椎,每個(gè)模塊都是一個(gè)函數(shù)
  
   // 模塊緩存數(shù)組,記錄已經(jīng)加載的模塊
   var installedModules = {};

   // 加載函數(shù)
   function __webpack_require__(moduleId) {

     // 檢測是否已經(jīng)加載
     if (installedModules[moduleId]) {
       return installedModules[moduleId].exports;
     }
     // 根據(jù)模塊id創(chuàng)建一個(gè)模塊module戏仓,并且存入模塊緩存數(shù)組
     var module = installedModules[moduleId] = {
       i: moduleId,
       l: false,
       exports: {}
     };

     // 執(zhí)行傳入的模塊數(shù)組中modules[moduleId]
     modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

     // 模塊加載狀態(tài)置為true
     module.l = true;

     // 返回module的exports疚宇,這邊就是各個(gè)模塊定義的返回內(nèi)容
     return module.exports;
   }

   // 加載入口模塊,返回入口模塊的module.exports
   return __webpack_require__(__webpack_require__.s = 0);
 })

 ([
   /* 0 */
   (function (module, exports, __webpack_require__) {

     // 通過 CommonJS 規(guī)范導(dǎo)入 show 函數(shù)
     const show = __webpack_require__(1);
     // 執(zhí)行 show 函數(shù)
     show('Webpack');

   }),
   /* 1 */
   (function (module, exports) {

     // 操作 DOM 元素赏殃,把 content 顯示到網(wǎng)頁上
     function show(content) {
       window.document.getElementById('app').innerText = 'Hello,' + content;
     }

     // 通過 CommonJS 規(guī)范導(dǎo)出 show 函數(shù)
     module.exports = show;


   })
 ]);

從上面打包之后的代碼可以看出,webpack把我們的文件分成了不同的模塊函數(shù)敷待,初始加載入口模塊函數(shù),然后將加載后的模塊函數(shù)進(jìn)行緩存仁热,每個(gè)模塊函數(shù)加載后的返回值就是我們模塊對外暴露的對象榜揖,這樣就可以被其它模塊進(jìn)行使用,至此抗蠢,這就是最簡單的同步加載使用場景

下一篇我們一起看webpack如何異步加載模塊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末举哟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子迅矛,更是在濱河造成了極大的恐慌妨猩,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秽褒,死亡現(xiàn)場離奇詭異壶硅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)销斟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門森瘪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人票堵,你說我怎么就攤上這事扼睬。” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵窗宇,是天一觀的道長措伐。 經(jīng)常有香客問我,道長军俊,這世上最難降的妖魔是什么侥加? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮粪躬,結(jié)果婚禮上担败,老公的妹妹穿的比我還像新娘。我一直安慰自己镰官,他們只是感情好提前,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泳唠,像睡著了一般狈网。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上笨腥,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天拓哺,我揣著相機(jī)與錄音,去河邊找鬼脖母。 笑死士鸥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谆级。 我是一名探鬼主播烤礁,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哨苛!你這毒婦竟也來了鸽凶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤建峭,失蹤者是張志新(化名)和其女友劉穎玻侥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亿蒸,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凑兰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了边锁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姑食。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖茅坛,靈堂內(nèi)的尸體忽然破棺而出音半,到底是詐尸還是另有隱情则拷,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布曹鸠,位于F島的核電站煌茬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏彻桃。R本人自食惡果不足惜坛善,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望邻眷。 院中可真熱鬧眠屎,春花似錦、人聲如沸肆饶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抖拴。三九已至燎字,卻和暖如春腥椒,著一層夾襖步出監(jiān)牢的瞬間阿宅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工笼蛛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洒放,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓滨砍,卻偏偏與公主長得像往湿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子惋戏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

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

  • 寫在開頭 先說說為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,276評論 4 31
  • GitChat技術(shù)雜談 前言 本文較長领追,為了節(jié)省你的閱讀時(shí)間,在文前列寫作思路如下: 什么是 webpack响逢,它要...
    蕭玄辭閱讀 12,679評論 7 110
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺绒窑,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,147評論 7 35
  • 和他的相處模式不同于一般的情侶舔亭,我們可以肆無忌憚的討論他曾經(jīng)的風(fēng)流韻事些膨,我們可以對著路上的姑娘開個(gè)無傷大雅的小玩笑...
    停留在過去的未來閱讀 108評論 0 0
  • 猴小跳姊妹五個(gè)订雾,年齡只錯(cuò)兩歲,她排行老三矛洞。成年的她總很疑惑:媽媽怎么那么能生?虧得有猴外婆猴外爺跑前跑后的照顧洼哎,否...
    非常道_faae閱讀 486評論 0 2