前端项目练习(练习-004-webpack-02)

news/2024/12/22 15:26:31/

学习前,首先,创建一个web-004项目,内容和web-003一样。(注意将package.json中的name改为web-004)

前面的例子,成功将js文件打包到了dist中,但是我们有三个文件,css,js和html,还有css和html文件没有打包。

webpack 只能理解 JavaScript 和 JSON 文件,这是 webpack 开箱可用的自带能力。要想打包更多类型的文件,需要使用插件。插件可以用于执行范围更广的任务。包括:打包优化,资源管理,注入环境变量等。

html-webpack-plugin插件

HtmlWebpackPlugin是webpack 的插件,用到该插件的两个主要作用:

1、为html文件中引入的外部资源如script、link动态添加每次compile后的hash,防止引用缓存的外部文件问题

2、可以生成创建html入口文件,比如单页面可以生成一个html文件入口,配置N个html-webpack-plugin可以生成N个页面入口

也就是说,插件的基本作用就是生成html文件,不用手动生成。
 

首先安装插件:

npm install html-webpack-plugin --save-dev

打开package.json可以看到依赖中增加了html-webpack-plugin。

然后在webpack.config.js中增加插件配置:

上面的内容在顶部增加了一个插件的引入:

const HtmlWebpackPlugin = require("html-webpack-plugin");

然后在下面增加了一个plugins属性,指定了html文件的位置。

plugins: [new HtmlWebpackPlugin({template: "./src/view/index.html"})],

增加完配置后,从新执行npm run build命令,可以看到打包好的dist文件夹中,有了html文件:

打开dist下面的index.html文件,发现顶部自动加了一个js文件的引入:

这是因为html-webpack-plugin插件会自动为html文件引入外部的js文件资源,所以我们可以把原来的src/view下的index.html源文件中引入资源的语句删除了。如下图所指的两行可以删掉了:

从新执行npm run build,可以看到打包的html文件中,加了js文件的引入:

MiniCssExtractPlugin插件

打包css文件,官方推荐使用mini-css-extract-plugin插件。

首先,安装插件:

npm install --save-dev mini-css-extract-plugin

然后在webpack.config.js中配置插件:

从新打包,发现css文件并没有自动打入dist包中。。。。。。

mini-css-extract-plugin 与 css-loader 一起使用

上面只是讨论了mini-css-extract-plugin插件的安装,要打包css文件,最好配合css-loader一起使用。

首先安装css-loader:

npm install --save-dev css-loader

接下来一步比较重要,把css文件引入到js文件中:

接下来在webpack.config.js中配置css-loader:

 

这样就配置好了,从新执行 npm run build 打包,可以看到dist文件夹下三个文件都有了:

打开index.html,可以看到,js文件和css文件都成功自动引入:


http://www.ppmy.cn/news/1124787.html

相关文章

Java基于SSM+JSP的服装定制系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 .技术栈3 分析4系统设计4.1 软件功能模块设计4.2.2 物理模型设计 5系统详细设计5.1系统功…

数据链路层协议

文章目录 数据链路层协议0. 数据链路层解决的问题1. 以太网协议(1) 认识以太网(2) 以太网帧格式<1> 两个核心问题 (3) 认识MAC地址(4) 局域网通信原理(5) MTU<1> 认识MTU<2> MTU对IP协议的影响<3> MTU对UDP协议的影响<4> MTU对TCP协议的影响<…

抽检监测实施

声明 本文是学习GB-T 42893-2023 电子商务交易产品质量监测实施指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件提供了开展电子商务交易的有形产品质量监测的总则&#xff0c;监测准备、监测实施、监测效果评价 与反馈等过程指导…

用flex实现grid布局

1. css代码 .flexColumn(columns, gutterSize) {display: flex;flex-flow: row wrap;margin: calc(gutterSize / -2);> div {flex: 0 0 calc(100% / columns);padding: calc(gutterSize / 2);box-sizing: border-box;} }2.用法 .grid-show-item3 {width: 100%;display: fl…

小程序中如何导出会员卡的档案信息

对于医院、美容院等特殊商家&#xff0c;可能需要在给会员添加一些档案。例如今天客户是什么情况&#xff0c;做了什么服务&#xff0c;解决了什么问题。添加这些档案后&#xff0c;系统会保存这些信息&#xff0c;供下次来的时候使用&#xff0c;或者为商家日后做营销提供依据…

Python中两个最常用的单元测试框架unittest和pytest

这篇文章的主要目的是讨论Python中两个最常用的单元测试框架unittest和pytest&#xff0c;它们的优缺点以及在何时选择哪个框架。 Python unittest vs Pytest 在编写任何软件时&#xff0c;我们必须在开发过程中保持错误检查的过程。这确保了一旦软件达到发布阶段&#xff0c;…

打印大对象日志导致GC问题的解决

内容&#xff1a; rpc调用外部服务时&#xff0c;需要将req和resp的信息打印出来&#xff0c;以便于排查问题。但是有的rpc服务的resp信息过于庞大&#xff0c;比如resp中有List<>信息&#xff0c;list很大很大时会导致log.info打印信息时&#xff0c;产生GC&#xff0c…

爬虫异常处理实战:应对请求频率限制和数据格式异常

作为一名资深的爬虫程序员&#xff0c;今天我要和大家分享一些实战经验&#xff0c;教你如何处理爬虫中的异常情况&#xff0c;包括请求频率限制和数据格式异常。如果你是一个正在进行网络爬虫开发的开发者&#xff0c;或者对异常处理感兴趣&#xff0c;那么这篇文章将帮助你更…