摘要:當(dāng)處理應(yīng)用程序時,它會遞歸地構(gòu)建一個依賴關(guān)系圖,其中包含應(yīng)用程序需要的每個模塊,然后將所有這些模塊打包成一個或多個。而可以將所有類型的文件處理成能夠識別的有效模塊,然后再對其進行處理。
1. 什么是webpack
先來看看官網(wǎng)對webpack的介紹?:
本質(zhì)上,webpack是一個現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)。當(dāng) webpack 處理應(yīng)用程序時,它會遞歸地構(gòu)建一個依賴關(guān)系圖(dependency graph),其中包含應(yīng)用程序需要的每個模塊,然后將所有這些模塊打包成一個或多個bundle。
簡單來說webpack就是一個JavaScript的打包器,將各種模塊(module)打包成資源文件;還可以通過 Code Spliting 來把代碼分離到不同的 bundle 中,然后可以按需加載或并行加載這些文件;webpack 可以使用 loader?來預(yù)處理文件,這允許你打包除了JavaScript 之外的任何靜態(tài)資源。
官網(wǎng)首頁很清晰的展示了webpack的主要功能:
?
我們可以看到,一堆 modules 經(jīng)過?webpack 打包處理成了各種靜態(tài)資源。這就是 webpack
2. webpack核心概念在開始學(xué)習(xí) webpack 之前,你需要了解 webpack 的四個核心概念:?
入口(entry)
出口(output)
loader
插件(plugins)?
?2.1 入口(entry)入口指示 webpack 應(yīng)該使用哪個模塊,來開始構(gòu)建其內(nèi)部依賴。進入入口后,webpack 會找出有哪些模塊和庫是與入口相依賴的。
我們可以在webpack配置中配置entry屬性,來設(shè)置一個或多個入口起點。以下是一個簡單的entry配置:
const config = { entry: { main: "path/to/your/entry/index.js" } } module.exports = config2.2 出口(output)
?設(shè)置output是為了告訴webpack要在哪里輸出其創(chuàng)建的bundle,并且可以對bundle命名。示例:
const path = require("path") const config = { entry: { main: "path/to/your/entry/index.js" },? output: { filename:"[name].bundle.js", path: path.join(__dirname,"./dist")? } } module.exports = config
我們通過 output.filename 來設(shè)置輸出bundle的文件名, output.path 來設(shè)置 bundle 的輸出路徑?
?>path 是 nodeJs 中的核心模塊,用來處理項目中的路徑。
?2.3 loader由于 webpack 只認識 JavaScript 代碼,因此就需要借助其他方法來處理那些非 JavaScript 文件,如 css、image、font等。而 loader 可以將所有類型的文件處理成 webpack 能夠識別的有效模塊,然后再對其進行處理。
test屬性,用于標(biāo)識出應(yīng)該被對應(yīng)的 loader 進行轉(zhuǎn)換的某個或某些文件,通常是一個正則表達式;
use屬性,表示進行轉(zhuǎn)換時,應(yīng)該使用哪個 loader;
const path = require("path") const config = { entry: { main: "path/to/your/entry/index.js" }, output: { filename: "[name].bundle.js", path: path.join(__dirname, "./dist") }, module: { loaders: [ { test: /.ejs$/, use: ["ejs-loader"] } ] } } module.exports = config
以上示例中l(wèi)oader的配置相當(dāng)于告訴webpack在遇到 .ejs 的文件時,在打包之前先用 ejs-loader 裝換一下。
2.4 插件(plugins)loader 被用于轉(zhuǎn)換某些類型的模塊,而插件則可以用于執(zhí)行范圍更廣的任務(wù)。想要使用一個插件,你只需要require()它,然后把它添加到plugins數(shù)組中。多數(shù)插件可以通過選項(option)自定義。
const path = require("path") const HtmlWebpackPlugin = require("html-webpack-plugin") // 通過 npm 安裝 const config = { entry: { main: "path/to/your/entry/index.js" }, output: { filename: "[name].bundle.js", path: path.join(__dirname, "./dist") }, module: { loaders: [ { test: /.ejs$/, use: ["ejs-loader"] } ] }, plugins: [ new HtmlWebpackPlugin({ title: "webpack demo", template: path.join(__dirname, "./index.html") }) ] } module.exports = config
HtmlWebpackPlugin?將為你生成一個 HTML5 文件, 其中包括使用script標(biāo)簽的 body 中的所有 webpack 包,webpack 提供提供了許多功能強大的插件,查閱插件列表獲取更多插件的使用方法。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/100883.html
摘要:傳送門系列教程一初識系列教程二創(chuàng)建項目,打包第一個文件系列教程三自動生成項目中的文件系列教程四處理項目中的資源文件一系列教程五處理項目中的資源文件二系列教程六使用分割代碼系列教程七使用系列教程八使用審查代碼系列教程九開發(fā)環(huán)境和生產(chǎn)環(huán)境 在前端開發(fā)日益復(fù)雜的今天,我們需要一個工具來幫助我們管理項目資源,打包、編譯、預(yù)處理、后處理等等。webpack的出現(xiàn)無疑是前端開發(fā)者的福音,我的博文只...
摘要:全網(wǎng)最貼心系列教程和配套代碼歡迎關(guān)注個人技術(shù)博客。所以我花費了個多月整理了這份教程,一共分成節(jié),每節(jié)都有講解,并且準備了配套代碼。奈何深感水平不夠,只有一腔熱情,所以直接開放了教程和源碼。 webpack-demos:全網(wǎng)最貼心 webpack 系列教程和配套代碼 歡迎關(guān)注個人技術(shù)博客:godbmw.com。每周 1 篇原創(chuàng)技術(shù)分享!開源教程(webpack、設(shè)計模式)、面試刷題(偏前...
摘要:本身就是為了打包所設(shè)計,作為第一節(jié),介紹怎么打包。檢驗規(guī)范支持支持。創(chuàng)建文件夾,其中和分別用和規(guī)范編寫。收尾打包后的文件會按照我們的配置放在目錄下,這時,需要創(chuàng)建一個文件,引用打包好的文件。個人網(wǎng)站原文鏈接系列教程一打包 webpack 本身就是為了打包js所設(shè)計,作為第一節(jié),介紹怎么打包js。 1. 檢驗webpack規(guī)范支持 webpack支持es6, CommonJS, AMD。...
摘要:課程地址全部課程地址立即進入課程源碼目錄截至按照知識點,目錄分成了個文件夾之后還會持續(xù)更新。個人網(wǎng)站原文鏈接系列教程前言 本文檔已經(jīng)過時,最近內(nèi)容請看:https://godbmw.com/passage/76。一共16節(jié)課程和代碼。謝謝支持。 1. 什么是webpack? 前端目前最主流的javascript打包工具,在它的幫助下,開發(fā)者可以輕松地實現(xiàn)加密代碼、多平臺兼容。而最重要的...
摘要:對于大多數(shù)項目,建議本地安裝。打包第一個文件首先,我們在根目錄下創(chuàng)建一個文件和一個文件夾。而中的屬性,表示入口的名稱,此處就是。接下來打開文件,來編寫一條命令執(zhí)行的打包。 1. 創(chuàng)建項目 1.1 初始化一個項目 首先安裝nodejs,打開?nodeJs官網(wǎng)?直接下載安裝即可,安裝完畢后打開命令行工具,進入你的項目文件夾,執(zhí)行 npm init 進行項目的初始化: showImg(htt...
閱讀 844·2021-11-09 09:47
閱讀 1651·2019-08-30 15:44
閱讀 1191·2019-08-26 13:46
閱讀 2174·2019-08-26 13:41
閱讀 1363·2019-08-26 13:32
閱讀 3845·2019-08-26 10:35
閱讀 3593·2019-08-23 17:16
閱讀 514·2019-08-23 17:07