webpack

image.png

loaderwebpack的核心工作原理猴誊,通過這些資源加載器,完成webpack的打包工作
plugin相當(dāng)于掛載在webpack生命周期中的鉤子程序侮措,通過這些鉤子程序達(dá)到在使webpack實現(xiàn)更加強大的功能

webpack-dev-server 實現(xiàn)代理api

如圖:

代理api實現(xiàn)跨域

pathRewrite替換代理中出現(xiàn)的字符
changeOrigin不能使用localhost+端口使用的域名懈叹,而是使用實際的代理域名的IP

webpack配置source-map

使用屬性devtool
傳輸參數(shù)較多,常用的有:
eval-是否使用eval執(zhí)行模塊代碼
cheap-Source Map 是否包含行信息
module-是否能夠得到Loader處理之前的代碼

模塊熱替HMR

webpack-dev-server中內(nèi)置集成有HMR:

const webpack = require("webpack")
//...
module.exports={
  //...
  devServer: {
    hotOnly: true  
  }
  //...
  plugins: {
      //...
      new hotModuleReplacementPlugin()
  }
}

HMRAPIs
在入口文件中:

 import createEditor from './editor'
import background from './better.png'
import './global.css'

const editor = createEditor()
document.body.appendChild(editor)

const img = new Image()
img.src = background
document.body.appendChild(img)

// ============ 以下用于處理 HMR分扎,與業(yè)務(wù)代碼無關(guān) ============

// console.log(createEditor)

if (module.hot) {
  let lastEditor = editor

//處理js文件
  module.hot.accept('./editor', () => {
    // console.log('editor 模塊更新了澄成,需要這里手動處理熱替換邏輯')
    // console.log(createEditor)

    const value = lastEditor.innerHTML
    document.body.removeChild(lastEditor)
    const newEditor = createEditor()
    newEditor.innerHTML = value
    document.body.appendChild(newEditor)
    lastEditor = newEditor
  })
//處理圖片文件
  module.hot.accept('./better.png', () => {
    img.src = background
    console.log(background)
  })
}



  1. Webpack 的構(gòu)建流程主要有哪些環(huán)節(jié)?如果可以請盡可能詳盡的描述 Webpack 打包的整個過程

構(gòu)建流程主要運行在 nodejs 環(huán)境下,配置文件遵循 CommonJS 規(guī)范

工作過程:

  • 代碼及資源文件散落在項目各處墨状,Webpack 根據(jù)配置卫漫,找到入口文件
  • 以入口文件作為打包入口,根據(jù)出現(xiàn)的 import肾砂、require 等語句列赎,解析推斷出依賴的資源文件,再分別解析
  • 每個資源模塊對應(yīng)的依賴镐确,最終形成整個項目文件之間依賴關(guān)系的依賴樹
  • 遍歷包吝、遞歸依賴樹,找到每個節(jié)點對應(yīng)的資源文件
  • 根據(jù)配置文件的 rules 屬性源葫,找到對應(yīng)模塊的加載器诗越,使用加載器加載相應(yīng)的模塊
  • 加載的結(jié)果會被并入 bundle.js(打包輸入文件),從而實現(xiàn)整個項目的打包
    示例: 查看
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末臼氨,一起剝皮案震驚了整個濱河市掺喻,隨后出現(xiàn)的幾起案子芭届,更是在濱河造成了極大的恐慌储矩,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褂乍,死亡現(xiàn)場離奇詭異持隧,居然都是意外死亡,警方通過查閱死者的電腦和手機逃片,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門屡拨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人褥实,你說我怎么就攤上這事呀狼《督觯” “怎么了加袋?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胁黑。 經(jīng)常有香客問我僻澎,道長貌踏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任窟勃,我火速辦了婚禮祖乳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秉氧。我一直安慰自己眷昆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亚斋,像睡著了一般垦藏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伞访,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天掂骏,我揣著相機與錄音,去河邊找鬼厚掷。 笑死弟灼,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的冒黑。 我是一名探鬼主播田绑,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抡爹!你這毒婦竟也來了掩驱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤冬竟,失蹤者是張志新(化名)和其女友劉穎欧穴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泵殴,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡涮帘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了笑诅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片调缨。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吆你,靈堂內(nèi)的尸體忽然破棺而出弦叶,到底是詐尸還是另有隱情,我是刑警寧澤妇多,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布伤哺,位于F島的核電站,受9級特大地震影響砌梆,放射性物質(zhì)發(fā)生泄漏默责。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一咸包、第九天 我趴在偏房一處隱蔽的房頂上張望桃序。 院中可真熱鬧,春花似錦烂瘫、人聲如沸媒熊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芦鳍。三九已至嚷往,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間柠衅,已是汗流浹背皮仁。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留菲宴,地道東北人贷祈。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像喝峦,于是被迫代替她去往敵國和親势誊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348