偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Webpack最常用的插件:HTML Webpack Plugin

開發(fā) 前端
HTML Webpack Plugin是使用 webpack 開發(fā)前端項目必不可少的插件也不為過,因為它可以自動幫我們將 webpack 打包生成的文件(比如 js 文件、css 文件)嵌入到 html 文件中。

今天介紹 webpack 的一個最常用的插件:HTML Webpack Plugin。

說它是使用 webpack 開發(fā)前端項目必不可少的插件也不為過,因為它可以自動幫我們將 webpack 打包生成的文件(比如 js 文件、css 文件)嵌入到 html 文件中。

這在生成的文件帶有哈希串時尤為有用。

在 webpack 配置文件引入 HtmlWebpackPlugin 插件,然后在 plugins 數(shù)組中通過 new HtmlWebpackPlugin() 加入 HtmlWebpackPlugin 實例對象即可。

// webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './src/index.js',
output: {
filename: 'app.[contenthash:8].js',
},
mode: 'production',
plugins: [
new HtmlWebpackPlugin()
],
}

我們執(zhí)行 npx webpack 命令后,webpack 額外給我們生成了一個 dist/index.html 文件。該 html 文件格式化后得到的內(nèi)容為:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Webpack App</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<script defer="defer" src="app.c8b961ec13a790ae7d15.js"></script>
</head>
<body></body>
</html>

可以看到將打包好的 app.js 文件被自動嵌入到 head 元素下最后一個子元素位置。

這里打包文件名尾部被添加了內(nèi)容哈希串,這意味著每次項目的內(nèi)容發(fā)生變化,哈希串的值都不同。

試想下,如果你自己管理 html 文件,每次都要改這個 js 文件名,是要多累,還好有 HtmlWebpackPlugin 幫忙。

當(dāng)然前面這種只是 HtmlWebpackPlugin 插件的默認用法,我們可以做更具體的定制化。

一些常用的屬性

我們需要傳入一個配置對象來進行模板渲染定制化。

HtmlWebpackPlugin 的配置非常豐富,不過常用的就幾個。

plugins: [
new HtmlWebpackPlugin({
title: '前端西瓜哥的博客',
favicon: 'static/favicon.ico',
}),
],

  • titile:設(shè)置網(wǎng)頁標(biāo)題。
  • filename:生成 html 文件名,默認值為 index/html。
  • template:使用自己的模板,這里填這個模板的路徑,使用了之后一些配置項就無效了,比如 title。
  • favicon:指定網(wǎng)站圖標(biāo)路徑,除了會在 html 上填充 favicon 相關(guān)內(nèi)容,還會將該文件拷貝到打包文件夾下,非常好用。
  • minify:是否壓縮 html 文件。不設(shè)置時,如果 webpack 的 mode 為 production,就會壓縮 html,移除多余的空格和注釋之類的。

使用自定義 html 模板

在實際開發(fā)中,通常是創(chuàng)建一個 index.html 提供給 HtmlWebpackPlugin 插件作為模板。

這樣的話,title 等配置和一些更細碎的內(nèi)容就可以直接寫到 html 上。相比配置,直接在 html 上編輯要更直觀些。

我們在根目錄創(chuàng)建一個 index.html 作為模板:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前端西瓜哥</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body></body>
</html>

這樣就可以直接在 html 模板上添加 title,以及一些 cdn 形式的第三方庫。

webpack.config.js 配置改為:

plugins: [
new HtmlWebpackPlugin({
template: 'index.html'
}),
],

生成的 html 為:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前端西瓜哥</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script defer src="app.d02c9155f73c92f51bf5.js"></script>
</head>
<body></body>
</html>

第三方庫建議使用自己本地項目的,會更穩(wěn)定和安全些,比如上面就建議改為<script src="static/jquery-3.6.0.min.js"></script>。

這里會用到一個 copy-webpack-plugin 插件將一些文件或文件夾拷貝到打包目錄下。關(guān)于這個插件我會另外專門寫一篇文章講解,這里不展開。

自定義 html 注入變量

webpack 支持通過使用 lodash.template() 的方式注入變量。

我們將模板 html 改為下面這樣:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<%= htmlWebpackPlugin.options.saySomething %>
</body>
</html>

配置改為:

plugins: [
new HtmlWebpackPlugin({
template: 'index.html',
title: '前端西瓜哥的博客',
// 下面這個是自定義屬性
saySomething: 'Stay hungry, stay foolish'
}),
],

將傳入給 HtmlWebpackPlugin 的配置屬性會成為 htmlWebpackPlugin.options 對象下的屬性,嵌入到模板 html 下。

所以這里的生成結(jié)果是:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前端西瓜哥的博客</title>
<script defer src="app.d02c9155f73c92f51bf5.js"></script></head>
<body>
Stay hungry, stay foolish
</body>
</html>

因為使用了 lodash.template 模板渲染豐富,除了可以嵌入變量的值,還支持判斷條件、循環(huán)等特性,基本上可以滿足我們的絕大多數(shù)場景。

結(jié)尾

HTML Webpack Plugin 是被廣泛使用的 webpack 插件,用來將我們打包出來的文件自動嵌入到一個模板 HTML 中。

實際開發(fā)中,通常我們會使用自己編寫的 html 模板。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2021-12-19 07:21:48

Webpack 前端插件機制

2021-04-30 08:28:15

WebpackLoaderPlugin

2021-06-22 10:43:03

Webpack loader plugin

2020-11-17 08:09:01

webpack配置項腳手架

2020-09-19 21:26:56

webpack

2022-03-10 09:00:42

webpack配置項檢驗庫函數(shù)

2022-10-09 08:43:47

H5Webpack代碼

2020-08-05 08:21:41

Webpack

2024-05-27 00:00:01

2024-09-27 11:46:51

2021-12-24 08:01:44

Webpack優(yōu)化打包

2021-12-15 23:42:56

Webpack原理實踐

2021-12-25 22:29:04

WebpackRollup 前端

2021-12-20 00:03:38

Webpack運行機制

2022-02-10 14:23:16

WebpackJavaScript

2015-07-03 10:41:47

ReactWebpack

2017-05-02 16:29:11

Webpack技巧建議

2021-09-06 06:45:06

Webpack優(yōu)化MindMaster

2021-06-28 07:01:50

Webpack 前端Tree shakin

2021-08-07 07:23:08

Webpack中間件模型
點贊
收藏

51CTO技術(shù)棧公眾號