动态

详情 返回 返回

Webpack 簡介 - 动态 详情

構建其實是工程化、自動化思想在前端開發中的體現,把一系列流程用代碼去實現,讓代碼自動化地執行這一系列複雜的流程。 構建給前端開發注入了更大的活力,解放了我們的生產力。

Webpack 憑藉強大的功能與良好的使用體驗,已經成為目前最流行,社區最活躍的構建工具,是現代 Web 開發必須掌握的技能之一。

背景

在當下的前端環境裏,各種框架和工具層出不窮,比如 React、Vue、Angular 等,極大的提高了我們的開發效率,但是,他們都有一個共同點:源代碼無法直接運行,必須經過轉換之後才可執行。

而轉換代碼的這個過程我們可以稱之為構建,被用來進行構建的工具我們叫做構建工具,而 Webpack 便是其中的佼佼者。

構建工具的常規作用:

  • 代碼轉換:TypeScript 編譯成 JavaScript、SCSS 編譯成 CSS 等。
  • 文件優化:壓縮 JavaScript、CSS、HTML 代碼,壓縮合並圖片等。
  • 代碼分割:提取多個頁面的公共代碼、提取首屏不需要執行部分的代碼讓其異步加載。
  • 模塊合併:在採用模塊化的項目裏會有很多個模塊和文件,需要構建功能把模塊分類合併成一個文件。
  • 自動刷新:監聽本地源代碼的變化,自動重新構建、刷新瀏覽器。
  • 代碼校驗:在代碼被提交到倉庫前需要校驗代碼是否符合規範,以及單元測試是否通過。
  • 自動發佈:更新完代碼後,自動構建出線上發佈代碼並傳輸給發佈系統。

Webpack 的概念

Webpack 是使用 NodeJs 開發出來的一個構建工具,本質上,它是一個現代 JavaScript 應用程序的靜態模塊打包器(module bundler)。

當 Webpack 處理應用程序時,它會遞歸地構建一個依賴關係圖(dependency graph),其中包含應用程序需要的每個模塊,然後將所有這些模塊打包成一個或多個 bundle

在 Webpack 裏一切文件皆模塊,通過 Loader 轉換文件,通過 Plugin 注入鈎子,最後輸出由多個模塊組合成的文件。

Webpack 專注於構建模塊化項目。借用 Webpack 官網首頁的圖片來看一下它到底是什麼:

Wepack

一切文件:JavaScript、CSS、SCSS、圖片、模板,在 Webpack 眼中都是一個個模塊,這樣的好處是能清晰地描述出各個模塊之間的依賴關係,以方便 Webpack 對模塊進行組合和打包。 經過 Webpack 的處理,最終會輸出瀏覽器能使用的靜態資源。

Webpack 的基本配置

以下是 Webpack 的基本配置,主要包含了 webpack 的四個核心概念

  • 入口(entry)
  • 輸出(output)
  • loader
  • 插件(plugins)
const path = require('path');

module.exports = {
    // 模式配置
    mode: "production", // "production" | "development" | "none"

    // 入口文件
    entry: "./app/entry", // string | object | array

    output: {
        // webpack 如何輸出結果的相關選項
        path: path.resolve(__dirname,
            "dist"), // string
    },

    module: {
        // 關於模塊配置
        rules: [
            // 模塊規則(配置 loader、解析器等選項)
            {
                test: /\.jsx?$/,
            }
        ]
    },

    // 插件
    plugins: [
        // ...
    ],
}

Webpack 的優缺點

優點:

  • 專注於處理模塊化的項目,能做到開箱即用一步到位;
  • 通過 Plugin 擴展,完整好用又不失靈活;
  • 使用場景不僅限於 Web 開發;
  • 社區龐大活躍,經常引入緊跟時代發展的新特性,能為大多數場景找到已有的開源擴展;
  • 良好的開發體驗。

缺點:

  • 只能採用模塊化開發

選擇 Webpack 的原因

Webpack 能成為眾多構建工具中的佼佼者,主要有以下原因:

  • 大多數團隊在開發新項目時會採用緊跟時代的技術,這些技術幾乎都會採用“模塊化+新語言+新框架”,Webpack 可以為這些新項目提供一站式的解決方案;
  • Webpack 有良好的生態鏈和維護團隊,能提供良好的開發體驗和保證質量;
  • Webpack 被全世界的大量 Web 開發者使用和驗證,能找到各個層面所需的教程和經驗分享。

(本文完)

學習有趣的知識,結識有趣的朋友,塑造有趣的靈魂!

大家好!我是〖編程三昧〗的作者 隱逸王,我的公眾號是『編程三昧』,歡迎關注,希望大家多多指教!

知識與技能並重,內力和外功兼修,理論和實踐兩手都要抓、兩手都要硬!

user avatar Leesz 头像 alibabawenyujishu 头像 nihaojob 头像 qingzhan 头像 aqiongbei 头像 banana_god 头像 xiaoxxuejishu 头像 zhulongxu 头像 ccVue 头像 DingyLand 头像 kongsq 头像 tanggoahead 头像
点赞 96 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.