前端工程化:Webpack配置全攻略

前端工程化:Webpack配置全攻略

前端小伙伴們,今天我們來聊聊那個讓人又愛又恨的 Webpack。沒錯,就是那個配置起來讓你想砸鍵盤,但又離不開它的構建工具。別擔心,跟著我來,保證讓你從 Webpack 小白變成配置大師!

什么是 Webpack?

簡單來說,Webpack 就是一個現代 JavaScript 應用程序的靜態模塊打包工具。當 Webpack 處理應用程序時,它會在內部構建一個依賴圖,映射項目所需的每個模塊,并生成一個或多個 bundle。

聽起來很高大上?其實就是把你那一堆亂七八糟的代碼文件整理打包,變成瀏覽器能夠理解和運行的文件。就像是一個超級勤勞的保潔阿姨,把你屋里的衣服、書本、玩具都收拾得井井有條。

基礎配置

首先,我們來看看 Webpack 的基礎配置。創建一個 webpack.config.js 文件,這就是我們的配置大本營:

const path = require('path');module.exports = {entry: './src/index.js',output: {filename: 'bundle.js',path: path.resolve(__dirname, 'dist'),},
};

這里,entry 指定了應用程序的入口點,output 告訴 Webpack 在哪里輸出它所創建的 bundle,以及如何命名這些文件。

Loader:讓 Webpack 理解各種文件

Webpack 本身只理解 JavaScript 和 JSON 文件。Loader 讓 Webpack 能夠去處理其他類型的文件,并將它們轉換為有效模塊,以供應用程序使用。

module.exports = {// ...module: {rules: [{test: /\.css$/,use: ['style-loader', 'css-loader'],},{test: /\.(png|svg|jpg|gif)$/,use: ['file-loader'],},],},
};

看到沒?我們告訴 Webpack:"嘿,兄弟,遇到 .css 文件就用 style-loader 和 css-loader 處理,遇到圖片就用 file-loader 處理。"就這么簡單!

插件:Webpack 的神奇魔法

插件是 Webpack 的支柱功能。它們可以用來處理各種任務,從打包優化和壓縮,一直到重新定義環境中的變量。

const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');module.exports = {// ...plugins: [new CleanWebpackPlugin(),new HtmlWebpackPlugin({title: '我的超酷網頁',}),],
};

這里我們使用了 CleanWebpackPlugin 來清理 /dist 文件夾,以及 HtmlWebpackPlugin 來生成一個 HTML 文件。就像給 Webpack 安裝了兩個得力助手,一個負責打掃衛生,一個負責裝修房間。

模式:開發還是生產?

Webpack 提供了 mode 配置選項,告訴 Webpack 使用相應模式的內置優化:

module.exports = {mode: 'production', // 或者 'development'// ...
};

設置為 ‘production’ 時,Webpack 會自動啟用一堆優化插件,比如壓縮 JS 代碼。而 ‘development’ 模式則著重于快速構建和優秀的開發體驗。就像是給 Webpack 戴上了兩頂帽子,一頂是工作帽,一頂是度假帽。

開發服務器:熱更新的快感

使用 webpack-dev-server 可以提供一個簡單的 web 服務器,并且能夠實時重新加載:

module.exports = {// ...devServer: {contentBase: './dist',hot: true,},
};

這樣配置后,你修改代碼,瀏覽器就會自動刷新。簡直就像給你的開發流程裝上了一個渦輪增壓器!

代碼分離:不要把雞蛋都放在一個籃子里

代碼分離是 Webpack 中最引人注目的特性之一。它允許你將代碼分割成各種包,然后可以按需加載或并行加載這些文件。

module.exports = {// ...optimization: {splitChunks: {chunks: 'all',},},
};

這個配置告訴 Webpack:"嘿,幫我把公共的代碼抽出來,單獨打包。"這樣可以避免重復加載模塊,減小主包的體積。就像是把你的行李箱重新收拾了一遍,把常用的東西放在最容易拿到的地方。

Tree Shaking:甩掉多余的枝葉

Tree Shaking 是一個術語,通常用于描述移除 JavaScript 上下文中的未引用代碼。

module.exports = {mode: 'production',optimization: {usedExports: true,},
};

這個配置會在生產模式下自動啟用 Tree Shaking。它會分析你的代碼,找出哪些代碼沒有被使用,然后像園丁修剪樹木一樣,把這些無用的代碼"修剪"掉。

總結

好了,經過這一番折騰,你應該對 Webpack 的配置有了一個全面的認識。從基礎配置到高級特性,我們covered了 Webpack 的主要功能。記住,Webpack 就像是一個強大的瑞士軍刀,正確使用它可以大大提高你的開發效率和應用性能。

當然,Webpack 的世界遠不止這些。還有更多高級特性等待你去探索,比如懶加載、預加載、緩存等。但是,掌握了這些基礎,你已經可以自豪地說:“我也是個 Webpack 配置大師了!”

最后,別忘了經常查閱 Webpack 的官方文檔。因為在前端這個變化如此之快的世界里,昨天還是最佳實踐,今天可能就已經過時了。保持學習,不斷探索,你就能在前端工程化的道路上越走越遠。

現在,拿起你的鍵盤,開始你的 Webpack 配置之旅吧!記住,每一次報錯都是你走向大師之路的一塊鋪路石。加油,打工人!

海碼面試 小程序

包含最新面試經驗分享,面試真題解析,全棧2000+題目庫,前后端面試技術手冊詳解;無論您是校招還是社招面試還是想提升編程能力,都能從容面對~

的一塊鋪路石。加油,打工人!

海碼面試 小程序

包含最新面試經驗分享,面試真題解析,全棧2000+題目庫,前后端面試技術手冊詳解;無論您是校招還是社招面試還是想提升編程能力,都能從容面對~

[外鏈圖片轉存中…(img-LBHUGtbe-1720689041341)]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44034.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44034.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44034.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

人臉識別與檢測(保姆級教程--附帶源碼)

人臉識別與檢測(保姆級教程–附帶源碼) 項目背景 因項目需要招聘了一些日結工人,因此需要對工地現場的工人進行考勤管理,但工地只有海康攝像頭沒有專業考勤設備,因此需要基于視頻流開發人臉識別與檢測功能&#xff1…

Windows 虛擬機服務器項目部署

目錄 一、部署JDK下載JDK安裝JDK1.雙擊 jdk.exe 安裝程序2.點擊【下一步】3.默認安裝位置,點擊【下一步】4.等待提取安裝程序5.默認安裝位置,點擊【下一步】6.等待安裝7.安裝成功,點擊【關閉】 二、部署TomcatTomcat主要特點包括:…

奇怪的錯誤記錄

https://github.com/meta-llama/llama3/issues/80 讀模型沒問題,推理時出現: RuntimeError: “triu_tril_cuda_template” not implemented for ‘BFloat16’ ———————————————— 事發原因 我嘗試了解transformers的AutoProcessor時&a…

感應觸摸芯片集成為MCU,深度應用觸控按鍵技術的VR眼鏡

VR(Virtual Reality)即虛擬現實,簡稱VR,其具體內涵是綜合利用計算機圖形系統和各種現實及控制等接口設備,在計算機上生成的、可交互的三維環境中提供沉浸感覺的技術。它的工作原理是將左右眼圖像交互顯示在屏幕上的方式…

技術速遞|宣布為 .NET 升級助手提供第三方 API 和包映射支持

作者:Marco Goertz 排版:Alan Wang .NET 升級助手是一個 Visual Studio 擴展和命令行工具,可幫助您將應用從之前的 .NET 和 .NET Framework 升級到最新版本的 .NET。正如我們在之前的文章中所描述的那樣,它為升級 Microsoft 庫和框…

技術總結(1)——方向與成長思考

不知不覺已經發了30篇技術博客,本來最開始想的是回顧自己的技術生涯,怎樣做到失敗的生涯,但是后面發現,開始逐步寫技術博客,慢慢的開始沉浸里面這種回顧技術的感覺。做技術的人通常不喜歡研究市場,而做市場…

模型剪枝知識點整理

模型剪枝知識點整理 剪枝是深度學習模型優化的兩種常見技術,用于減少模型復雜度和提升推理速度,適用于資源受限的環境。 剪枝(Pruning) 剪枝是一種通過移除模型中不重要或冗余的參數來減少模型大小和計算量的方法。剪枝通常分為…

編程是學什么:探索編程世界的四大核心領域

編程是學什么:探索編程世界的四大核心領域 在數字化時代的浪潮中,編程已成為一項重要的技能。但很多人對于編程的學習內容仍然感到困惑,那么,編程究竟是學什么呢?本文將從四個方面、五個方面、六個方面和七個方面&…

探索TASKCTL和 DataStage 的ETL任務調度協同

在復雜多變的企業環境中,高效、準確的數據處理是支撐業務決策與運營的核心。本文將深入探討任務調度平臺TASKCTL與ETL工具DataStage的深度融合,通過詳盡的代碼示例、結合細節以及實際案例的具體描述,展示這兩個工具如何攜手打造企業數據處理生…

Xcode構建設置自定義:打造個性化的編譯環境

標題:Xcode構建設置自定義:打造個性化的編譯環境 在軟件開發過程中,根據不同的開發階段和需求,經常需要調整編譯設置以優化構建過程。Xcode作為蘋果官方的集成開發環境(IDE),提供了豐富的自定義…

簡述 Java 內存模型(JMM),特別是堆與棧的區別?

Java內存模型(JMM)是Java平臺定義的一種多線程之間的通信規范,它確保了在不同的線程之間能夠正確地共享和協調對內存的訪問。 JMM的關鍵目標是解決并發編程中的可見性、原子性和有序性問題。 簡單來說,它規定了如何在硬件內存、…

【C語言】 —— 預處理詳解(下)

【C語言】 —— 預處理詳解(下) 前言七、# 和 \##7.1 # 運算符7.2 ## 運算符 八、命名約定九、# u n d e f undef undef十、命令行定義十一、條件編譯11.1、單分支的條件編譯11.2、多分支的條件編譯11.3、判斷是否被定義11.4、嵌套指令 十二、頭文件的包…

淺層神經網絡示例

輸出層采用sigmoid激活,隱藏層采用tanh激活 import h5py import numpy as npfrom project_02.code.planar_utils import load_planar_dataset, plot_decision_boundarydef sigmoid(z):s 1 / (1 np.exp(-z))return sdef init_parameters(n_x, n_h, n_y):"&qu…

如何在 Objective-C 中實現多態性,并且它與其他面向對象編程語言的多態性實現有何差異?

在Objective-C中,多態性可以通過使用父類的指針來調用子類的方法來實現。具體來說,可以定義一個父類的指針,然后將子類的實例賦值給這個指針。這樣,即使使用父類的指針來調用方法,實際上會調用子類的方法。 需要注意的…

Day1每日編程題日記:數字統計、兩個數組的交集、點擊消除

前言:該篇用于記錄自看。曾回看昨天的做題代碼,竟然會覺得陌生,這竟然是我寫的,細細讀了一下,原來我當時是這么想的。因此我覺得記代碼沒有實際用處,重點是領悟了思想,這樣子代碼就在心中&#…

HashMap----源碼解讀

源碼分析&#xff1a; public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable 在類的開頭聲明了幾個常量&#xff0c;以下是較為重要的&#xff1a; /*** 定義初始容量大小為16*/ static final int DEFAULT_I…

探索【Python面向對象】編程:新時代的高級編程范式詳解

目錄 1. 面向對象編程概念&#xff08;OOP&#xff09; 1.1 什么是類和對象&#xff1f; 1.2 類的定義 1.3 類和對象的關系 1.4 小李的理解 2. 抽象 2.1 抽象的概念 2.2 抽象類和方法 2.3 小李的理解 3. 類和實例 3.1 類的定義和實例化 3.2 類的屬性和方法 3.3 小…

如何使用Python在企業微信中發送測試結果?操作看這里!

在日常的自動化測試工作中&#xff0c;一般會需要把測試結果同步到工作群里&#xff0c;方便信息同步。那么我們今天就使用企業微信和Pythonrequests庫來演示一下具體如何操作吧&#xff01; 01 準備 開始之前&#xff0c;我們應該確保已經安裝了python環境&#xff0c;并且要…

DNS知識點

??打牌 : da pai ge的個人主頁 ???個人專欄 : da pai ge的博客專欄 ??寶劍鋒從磨礪出,梅花香自苦寒來 ? 目錄 一、DNS概念 二 hosts 文件 三 DNS優缺點 三 客戶端域名解析順序(優先級)…

8.9分王者“水刊”!1區IEEE-Trans,國人主編坐鎮!發文量2倍增長,擴刊趨勢明顯!

關注GZH【歐亞科睿學術】&#xff0c;第一時間了解最新期刊動態&#xff01; 本期&#xff0c;小編給大家推薦的是一本IEEE旗下王者“水刊”。該期刊目前處于擴刊狀態&#xff0c;接收跨學科領域&#xff0c;領域認可度高&#xff0c;還可選擇非OA模式無需版面費&#xff0c;是…