今天介绍 webpack 的一个最常用的插件:html Webpack Plugin。
说它是使用 webpack 开发前端项目必不可少的插件也不为过,因为它可以自动帮我们将 webpack 打包生成的文件(比如 js 文件、css 文件)嵌入到 html 文件中。
这在生成的文件带有哈希串时尤为有用。
在 webpack 配置文件引入 HtmlWebpackPlugin 插件,然后在 plugins 数组中通过 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()
],
}
我们执行 npx webpack 命令后,webpack 额外给我们生成了一个 dist/index.html 文件。该 html 文件格式化后得到的内容为:
<!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 元素下最后一个子元素位置。
这里打包文件名尾部被添加了内容哈希串,这意味着每次项目的内容发生变化,哈希串的值都不同。
试想下,如果你自己管理 html 文件,每次都要改这个 js 文件名,是要多累,还好有 HtmlWebpackPlugin 帮忙。
当然前面这种只是 HtmlWebpackPlugin 插件的默认用法,我们可以做更具体的定制化。
我们需要传入一个配置对象来进行模板渲染定制化。
HtmlWebpackPlugin 的配置非常丰富,不过常用的就几个。
plugins: [
new HtmlWebpackPlugin({
title: '前端西瓜哥的博客',
favicon: 'static/favicon.ico',
}),
],
在实际开发中,通常是创建一个 index.html 提供给 HtmlWebpackPlugin 插件作为模板。
这样的话,title 等配置和一些更细碎的内容就可以直接写到 html 上。相比配置,直接在 html 上编辑要更直观些。
我们在根目录创建一个 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>
第三方库建议使用自己本地项目的,会更稳定和安全些,比如上面就建议改为 <script src="static/jquery-3.6.0.min.js"></script> 。
这里会用到一个 copy-webpack-plugin 插件将一些文件或文件夹拷贝到打包目录下。关于这个插件我会另外专门写一篇文章讲解,这里不展开。
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 下。
所以这里的生成结果是:
<!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 模板渲染丰富,除了可以嵌入变量的值,还支持判断条件、循环等特性,基本上可以满足我们的绝大多数场景。
HTML Webpack Plugin 是被广泛使用的 webpack 插件,用来将我们打包出来的文件自动嵌入到一个模板 HTML 中。
实际开发中,通常我们会使用自己编写的 html 模板。
作者:前端西瓜哥 , 链接:https://www.toutiao.com/a7071546042243711529
向web前端开发者整理提供的chrome插件或应用:比如Postman、JSON Viewer、Page Ruler 、ChromeADB 等等
作为前端开发,我们都习惯使用一些开源的插件例如jquery工具库,那么如何使用原生js来开发封装一个自己的插件呢?接下来就看一下怎么去开发一个自己的js插件,先上代码
jquery.typeahead.js是一款高级的自动补全jQuery插件。该自动补全插件提供超过50个配置选项和回调方法,用于完成自动补全功能,能够完成绝大部分表单自动补全的需求。
这篇文章为大家分享图片轮播插件,最全最简单最通用的 幻灯片轮播插件,pc端和移动端都可完美使用,能满足绝大部分网站的轮播需求。js轮播插件包括Swiper、slick、owl carousel2、jssor/slider 、iSlider 等
在上个项目中,客户希望时间选择插件可以是ios风格的那种,但是找了很久,发现并没有用vue的ios风格时间插件,于是自己便自己造了一个轮子.插件依赖于better-scroll和vue
在前端开发中,使用Visual Studio Code有哪些你常用的插件?推荐几个自己喜欢的,不带链接,自己搜索安装吧。这些都是比较实用、前端必备的插件集
常用谷谷歌浏览器确实没有其它国产软件的内置功能丰富。但是 Google 浏览器的的优点恰恰就体现在拥有超简约的界面,以及支持众多强大好用的扩展程序,用户能够按照自己的喜好去个性化定制浏览器。今天我就给大家介绍几款自己常用的插件。
安装Sublime text 2插件很方便,可以直接下载安装包解压缩到Packages目录,也可以安装package control组件,然后直接在线安装
BlockUI 插件是用于进行AJAX操作时模拟同步传输时锁定浏览器操作。当它被激活时,它会阻止使用者与页面(或页面的一部分)进行交互,直至它被取消。BlockUI以在DOM中添加元素的方法来实现阻止用户与浏览器交互的外观和行为
使用vscode开发vue项目的时候,从远端拉下一个新的项目后,安装完依赖后跑起项目时,发现直接报了一堆语法错误:包括换行、空格、单双引号、分号等各种格式问题
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!