前端工程化產(chǎn)生的原因:在瀏覽器端砚哗,開發(fā)時態(tài)(devtime)和運行時態(tài)(runtime)的側(cè)重點是不一樣的
開發(fā)時態(tài)(devtime)
- 模塊劃分越細越好
- 支持多種模塊化標準
- 支持 npm 或其他包管理器下載的模塊
- 能夠解決工程化的問題
運行時態(tài)(runtime)
- 文件越少越好
- 文件體積越小越好
- 代碼內(nèi)容越亂越好
- 所有瀏覽器都兼容
- 能夠解決其他運行時的問題泌参,主要是執(zhí)行效率的問題
這種差異在小項目中表現(xiàn)的并不明顯常空,可以一旦項目形成規(guī)模,久越來越明顯铣缠,如果不解決這些問題,前端項目形成規(guī)模只能是空談
既然開發(fā)時態(tài)和運行時態(tài)面臨的局面有巨大差異蝗蛙,就是開發(fā)時候期望是一種代碼結(jié)構(gòu)醉鳖,運行時期望的是另一種代碼結(jié)構(gòu)
因此捡硅,我們需要有一個工具盗棵,這個工具能夠讓開發(fā)者專心的在開發(fā)時寫代碼北发,然后利用這個工具將開發(fā)時態(tài)編寫的代碼轉(zhuǎn)換為運行時需要的東西
這樣的工具喷屋,叫做構(gòu)建工具
webpack 特點
- 為工程化而生:webpack 致力于解決前端工程化,特別是瀏覽器工程化中遇到的問題狱庇,讓開發(fā)者集中注意力編寫業(yè)務(wù)代碼恶耽,而把工程化過程中的問題全部交給 webpack 處理
- 簡單易用:支持零配置,可以不用寫任何一行而外的代碼就使用 webpack
- 強大的生態(tài):webpack 是非常靈活驳棱,可以擴展的农曲,webpack 本身的功能并不多,但它提供了一些可以擴展某功能的機制乳规,使得一些第三方庫可以融入到 webpack 中
- 基于 node.js:由于 webpack 在構(gòu)建的過程中需要讀取文件,因此它是運行在 node 環(huán)境中的
- 基于模塊化:webpack 在構(gòu)建過程中要分析依賴關(guān)系暮的,方式是通過模塊化導(dǎo)入語句進行分析,它支持各種模塊化標準猖腕,包括但不限于 CommobJS、ES6倘感、Module