webpack 基礎概念理解

一、webpack 基礎概念理解

  1. 本質上,webpack 是一個現代 JavaScript 應用程序的靜態模塊打包器(module bundler)。當 webpack處理應用程序時,它會遞歸地構建一個依賴關係圖(dependency graph),其中包含應用程序需要的每個模塊,然後將所有這些模塊打包成一個或多個 bundlewebpack 支持 AMD (RequireJS)、ES ModulesCommonJS 等模式,如圖所示:

在這裏插入圖片描述

  1. webpackV1 時,功能主要爲 編譯、打包,HMR (模塊熱更新),代碼分割和文件處理。

  2. webpackV2 時,功能進化爲 Tree ShakingES module,動態 Import 和新的文檔。

  3. webpackV3 時,功能進化爲 Scope Hoisting 作用域提升和Magic Comments配合動態import 使用,Scope HositingWebpack 3的標誌性特徵。

  4. webpack 核心概念分爲 EntryOutputLoadersPlugins和 模式。

  5. Entry 是指示 webpack 應該使用哪個模塊,來作爲構建其內部依賴圖的開始。進入入口起點後,webpack 會找出有哪些模塊和庫是入口起點(直接和間接)依賴的,最後輸出到稱之爲 bundles的文件中。Entry是 代碼的入口、打包的入口,單個或多個。

  6. Output是告訴 webpack 在哪裏輸出它所創建的 bundles,以及如何命名這些文件,默認值爲 ./distOutput 是 打包成的文件(bundle)、一個或多個、自定義規則 和 配合 CDN

  7. Loaders 是 讓 webpack 能夠去處理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)。loader 可以將所有類型的文件轉換爲 webpack 能夠處理的有效模塊,然後你就可以利用 webpack 的打包能力,對它們進行處理。Loaders 是 處理文件和轉化爲模塊。常用的 loader,編譯相關有babel-loaderts-loader等等,樣式相關有style-loadercss-loaderless-loaderpostcss-loader等等,文件相關有file-loaderurl-loader等等。

  8. Plugins 是從打包優化和壓縮,一直到重新定義環境中的變量。插件接口功能極其強大,可以用來處理各種各樣的任務。. Plugins 是參與打包整個過程、打包優化和壓縮、配置編譯時的變量和極其靈活。常用Plugins,優化相關有CommonsChunkPlugiUglifyjsWebpackPlugin等等,功能相關有 ExtractTextWebpackPlugiHtmlWebpackPluginHotModuleReplacementPluginCopyWebpackPlugin等等

  9. 模式是通過選擇developmentproduction 之中的一個,來設置mode 參數,你可以啓用相應模式下的 webpack 內置的優化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章