11.【前端】webpack模塊打包

重要知識點

1、將一個 JavaScript 文件直接通過 script 標簽插入頁面中與封裝成 CommonJS 模塊最大的不同在于,前者的頂層作用域是全局作用域沮趣,在進行變量及函數(shù)聲明時會污染全局環(huán)境路翻,而后者會形成一個屬于模塊自身的作用域,所有的變量及函數(shù)只有自己能訪問夯到。

2、CommonJS 與 ES6 Module 最本質(zhì)的區(qū)別在于前者對模塊依賴的解決是“動態(tài)的”饮亏,而后者是“靜態(tài)的”耍贾。在這里“動態(tài)”的含義是,模塊依賴關(guān)系的建立發(fā)生在代碼運行階段路幸;而“靜態(tài)”則是模塊依賴關(guān)系的建立發(fā)生在代碼編譯階段荐开。在導(dǎo)入一個模塊時,對于 CommonJS 來說獲取的是一份導(dǎo)出值的拷貝简肴;而在 ES6 Module 中則是值的動態(tài)映射晃听,并且這個映射是只讀的。

3着帽、webpack.config.js 配置中杂伟,path 與 publicPath 的區(qū)別在于 path 指定的是資源的輸出位置,而 publicPath指定的是間接資源的請求位置仍翰。

常用 loader

loader 的字面意思是裝載器赫粥,在 Webpack 中它的實際功能則更像是預(yù)處理器。Webpack 本身只認識 JavaScript予借,對于其他類型的資源必須預(yù)先定義一個或多個 loader 對其進行轉(zhuǎn)譯越平,輸出為 Webpack 能夠接收的形式再繼續(xù)進行,因此 loader 實際上是一個預(yù)處理的工作灵迫。

npm install css-loader style-loader --save

css-loader 的作用是處理 CSS 的各種加載語法(@import 和 url() 函數(shù)等)秦叛,如果要使樣式起作用還需要 style-loader 來把樣式插入頁面。

npm install babel-loader @babel/core @babel/preset-env --save

babel-loader 用來處理 ES6+ 并將其編譯為 ES5 瀑粥,它是我們能夠在工程中使用最新的語言特性(甚至還在提案中)挣跋,同時不必特別關(guān)注這些特性在不同平臺的兼容問題。

npm install ts-loader typescript core-js --save

ts-loader 與 babel-loader 的性質(zhì)類似狞换,它是用于連接 Webpack 與 Typescript 的模塊避咆。

npm install html-loader --save

html-loader 用于將 HTML 文件轉(zhuǎn)化為字符串并進行格式化舟肉,這使得我們可以把一個 HTML 片段通過 JS 加載進來。

npm install file-loader --save

[webpack 5 已棄用] file-loader 用于打包文件類型的資源查库,并返回其 publicPath路媚。

npm install url-loader --save

[webpack 5 已棄用] url-loader 與 file-loader 作用類似,唯一的不同在于用戶可以設(shè)置一個文件大小的閾值樊销,當大于閾值時與 file-loader 一樣返回 publicPath整慎,而小于該閾值時則返回文件 base64 形式編碼。

備注

在配置 loader 時围苫,實際上定義的是模塊規(guī)則(module.rules)裤园,它主要關(guān)注兩件事:該規(guī)則對哪些模塊生效(test制圈、exclude滋尉、include 配置),使用哪些 loader(use 配置)软免。loader 可以使鏈式的周循,并且每一個都允許擁有自己的配置項。

url-loader 和 file-loader 在 webpack 5 里的新方案

直接上代碼

            // {
            //     test: /\.(png|jpg|gif)$/,
            //     use: [
            //         {
            //             loader: 'file-loader',
            //             options: {
            //                 name: '[sha512:hash:base64:7].[ext]'
            //             }
            //         }
            //     ]
            // } // by 七鏡 2021-12-06
            {
                test: /\.(png|jpg|gif)$/,
                type: 'asset/resource',
                generator: {
                    filename: 'static/[hash][ext][query]'
                }
            },
            {
                test: /\.svg/,
                type: 'asset/inline'
            }

可以看到万俗,把之前的 *-loader 注釋掉湾笛,添加新的 webpack 5 的 asset 配置就可以了,這里解釋如下:
1.asset/resource 發(fā)送一個單獨的文件并導(dǎo)出 URL闰歪。之前通過使用 file-loader 實現(xiàn)嚎研。
2.asset/inline 導(dǎo)出一個資源的 data URI。之前通過使用 url-loader 實現(xiàn)库倘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末临扮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子教翩,更是在濱河造成了極大的恐慌杆勇,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饱亿,死亡現(xiàn)場離奇詭異蚜退,居然都是意外死亡,警方通過查閱死者的電腦和手機彪笼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門钻注,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人配猫,你說我怎么就攤上這事幅恋。” “怎么了泵肄?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵捆交,是天一觀的道長淑翼。 經(jīng)常有香客問我,道長零渐,這世上最難降的妖魔是什么窒舟? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮诵盼,結(jié)果婚禮上惠豺,老公的妹妹穿的比我還像新娘。我一直安慰自己风宁,他們只是感情好洁墙,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著戒财,像睡著了一般热监。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饮寞,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天孝扛,我揣著相機與錄音,去河邊找鬼幽崩。 笑死苦始,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的慌申。 我是一名探鬼主播陌选,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蹄溉!你這毒婦竟也來了咨油?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤柒爵,失蹤者是張志新(化名)和其女友劉穎役电,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棉胀,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡宴霸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了膏蚓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓢谢。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖驮瞧,靈堂內(nèi)的尸體忽然破棺而出氓扛,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布采郎,位于F島的核電站千所,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蒜埋。R本人自食惡果不足惜淫痰,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望整份。 院中可真熱鬧待错,春花似錦、人聲如沸烈评。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讲冠。三九已至瓜客,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間竿开,已是汗流浹背谱仪。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留否彩,地道東北人芽卿。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像胳搞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子称杨,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

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