一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin)

概念与功能:

webpack是前端项目工程化的具体解决方案。它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理浏览器端JavaScript的兼容性、性能优化等强大的功能。

快速上手:隔行变色

-S实际是--save的简写,表示安装的第三方库要被记录到package.json的<dependencies>(开发和上线都要用到的包)下。虽然不加这个参数也会默认记录到那里。 

其中index.html: 

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./index.js"></script>
</head><body><ul><li>这是第1个li</li><li>这是第2个li</li><li>这是第3个li</li></ul>
</body></html>

index.js:

//使用ES6的导入语法,导入jquery模块
import $ from 'jquery'//jQuery的入口函数
$(function () {//实现奇偶行变色。奇数行为红色。偶数行为粉色$('li:odd').css('background-color', 'red')$('li:even').css('background-color', 'pink')
})

配置webpack:

1、在项目根目录的终端那运行npm i webpack@5.42.1 webpack-cli@4.7.2 -D

2、在项目根目录中,创建名为webpack..config.js的webpack配置文件,并初始化如下的基本配置:

//使用Node.js中的导出语法,向外导出一个webpack的配置对象
module.exports = {mode: 'development'//mode用来指定建构模式,值为development|production
}

其中-D是--save-dev的简写,意思是将这两个包记录到package.json的devDependencies(开发阶段会被用到,上线不用)下,虽然不加也会默认记录。

3、在package.json的scripts节点下,新增dev脚本如下:

 "scripts": { //即删除掉原来的test行,因为它没有任何作用"dev": "webpack" //dev是自定义的脚本名,可以通过npm run+脚本名 执行。例如npm run dev}//注意package配置文件不允许注释,这些注释只是笔记中记得。

4、在终端中运行npm run dev命令,启动webpack进行项目的打包构建

此时会发现项目目录中多了dist目录,里面的main.js即是webpack对于index.js和index.js中提到的高级语法,如jquery等的兼容重构。

5、然后回到index.html,将src改为新生成的main.js即可生成页面。

6、如果想要压缩生成的main.js,需要将webpack.config.js里面的mode改为production,然后重新npm run dev

经测试得知,production的main.js是88.3 KiB,打包时间是2145ms,development的main.js是328 KiB,打包时间是332ms。(下图上面是production,下面是development)

webpack-dev-server:

类似于node.js阶段用到nodemon工具。

每当修改了源代码,webpack会自动进行项目的打包和构建。

1、终端运行 npm install webpack-dev-server@3.11.2 -D(如果原来就安装有其他版本的webpack-dev-server,不管是比当前要安装的高版本还是低版本,都会被覆盖掉)

2、修改package.json->scripts的dev命令:"dev":"webpack serve"

3、再次运行npm run dev

4、访问浏览器的http://localhost:8080,查看自动打包效果

html-webpack-plugin

webpack中的HTML插件(类似于一个模板引擎插件)

可以通过此插件自定制index.html页面的内容

1、终端运行 npm i html-webpack-plugin@5.3.2 -D

2、修改webpack.config.js如下:

const HtmlPlugin = require('html-webpack-plugin') //导入HTML插件,得到一个构造函数
//通过构造函数构造一个实例
const htmlPlugin new HtmlPlugin({
template: './src/index.html',   //指定原文件的存放路径
filename:',/index.html',   //指定生成的文件的存放路径
})
module.exports ={
mode:'development',
plugins:[htmlPlugin],//3.通过plugins节点,使htmlPlugin插件生效
}

指定webpack的入口和输出:

在webpack4.x和5.x的版本中,有如下的默认约定:

默认的打包入口文件为src->index.js

默认的输出文件路径为dist->main.js

但是我们可以在webpack.config.js中,通过entry节点指定打包的入口。通过output节点指定打包的出口。

//使用Node.js中的导出语法,向外导出一个webpack的配置对象const path=require('path')//导入node.js中专门操作路径的模块module.exports = {entry: path.join(__dirname,'./src/index.js'),//打包入口文件的路径output:{//__dirname表示当前文件所属的目录,在这里是根目录path: path.join(__dirname,'./dist'),//输出文件的存放路径filename:'bundle.js'//输出文件的名称},mode: 'development'//mode用来指定建构模式,值为development|production//production的main.js是88.3 KiB development的main.js是328 KiB
}

loader配置

1、运行npm i style-loader@3.0.0 css-loader@5.2.6 -D

2、在webpack.config.js的module->rules数组中,添加loader规则如下:

    module: {rules: [//指定要加载的规则{test:/\.css$/,//test指定的是规则生效的文件,这里表示所有以.css结尾的文件use:['style-loader','css-loader']//表示要调用的loader}]},

其中,test表注意:use数组中指定的loader顺序是固定的,多个loader的调用顺序是:从后往前调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/80268.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

以太网DHCP协议(十)

目录 一、工作原理 二、DHCP报文 2.1 DHCP报文类型 2.2 DHCP报文格式 当网络内部的主机设备数量过多是&#xff0c;IP地址的手动设置是一件非常繁琐的事情。为了实现自动设置IP地址、统一管理IP地址分配&#xff0c;TCPIP协议栈中引入了DHCP协议。 一、工作原理 使用DHCP之…

Java 并发容器和框架Fork/Join详解

目 录 一 使用场景 1 大规模数据处理 2 复杂计算 3 并行搜索 4 并行排序 二 Fork/Join框架介绍 三 Fork/Join框架模块 四 Fork/Join框架核心思想 1分治思想(Divide-and-Conquer) 2 work-stealing(工作窃取)算法 五 Fork/Join框架执行流程 1 实现原理&#xff1a; 2…

消息队列(3) -封装数据库的操作

前言 上一篇博客我们写了, 关于交换机, 队列,绑定, 写入数据库的一些建库建表的操作 这一篇博客中,我们将建库建表操作,封装一下实现层一个类来供上层服务的调用 , 并在写完该类之后, 测试代码是否完整 实现封装 在写完上述的接口类 与 xml 后, 我们想要 创建一个类 ,来调用…

智慧城市规划新引擎:探秘数字孪生中的二维与三维GIS技术差异

智慧城市作为人类社会发展的新阶段&#xff0c;正日益引领着我们迈向数字化未来的时代。在智慧城市的建设过程中&#xff0c;地理信息系统&#xff08;GIS&#xff09;扮演着举足轻重的角色。而在GIS的发展中&#xff0c;二维和三维GIS作为两大核心技术&#xff0c;在城市规划与…

thinkphp8.0多应用模式下提示控制器不存在

thinkphp 8.0 开启多应用模式 1、按照官方文档说明 &#xff0c;已经安装了 think-multi-app composer require topthink/think-multi-app 2、控制器的命名空间也没写错。 3、访问路径与目录名、控制器、方法名一样&#xff0c;访问地址是没错的。 4、网上有说&#xff0c;在…

机器学习深度学习——序列模型(NLP启动!)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——卷积神经网络&#xff08;LeNet&#xff09; &#x1f4da;订阅专栏&#xff1a;机器学习&&深度…

Android 网络协议与网络编程

一、TCP/IP协议 Transmission Control Protocol/Internet Protocol的简写&#xff0c;中译名为传输控制协议/因特网互联 协议&#xff0c;是Internet最基本的协议、Internet国际互联网络的基础&#xff0c;由网络层的IP协议和传输层的TCP 协议组成。协议采用了4层的层级结构。…

Debian安装和使用Elasticsearch 8.9

命令行通过 .deb 包安装 Elasticsearch 创建一个新用户 adduser elastic --> rust # 添加sudo权限 # https://phoenixnap.com/kb/how-to-create-sudo-user-on-ubuntu usermod -aG sudo elastic groups elastic下载Elasticsearch v8.9.0 Debian 包 https://www.elastic.co/…

【PCB专题】Allegro中如何自动查找并删除不使用的规则

在Allegro软件使用中,我们经常是从上一个版本修改而来的。那么就会遇到有些多余规则没有使用的情况,怎么能够知道哪些规则没有使用并删除呢? 如下所示在Electrical中的All Constraints下存在SDIO规则和WIFI_SDIO规则。这两个规则是重复的,只是名称不同而已。 在规则的使…

python调用pytorch的clip模型时报错

使用python调用pytorch中的clip模型时报错&#xff1a;AttributeError: partially initialized module ‘clip’ has no attribute ‘load’ (most likely due to a circular import) 目录 现象解决方案一、查看项目中是否有为clip名的文件二、查看clip是否安装成功 现象 clip…

防火墙第二次作业

一、什么是防火墙&#xff1f; 百度给出个一个定义&#xff1a;防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备&#xff0c;帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障&#xff0c;以保护用户资料与信息安全性的一种技术。 通俗的来讲&#…

TestDataLake在提升测试效能方面的实践

目录 1.背景 2.预期目标 3.系统设计和实现 3.1系统功能组成 3.2 数据智能生成 3.3 接口遍历测试 4.应用效果和收益 5.后续规划 1.背景 随着软件开发的迅速发展&#xff0c;测试数据管理变得越来越复杂。手动创建测试数据需要耗费大量时间和精力&#xff0c;同时容易出…

【Docker】docker镜像+nginx部署vue项目:

文章目录 一、文档&#xff1a;二、打包vue项目&#xff1a;三、配置nginx&#xff1a;四、配置Dockerfile&#xff1a;五、构建镜像&#xff1a;六、运行容器&#xff1a;七、最终效果&#xff1a; 一、文档&#xff1a; 【1】菜鸟教程&#xff1a;https://www.runoob.com/do…

【云原生】深入掌握k8s中Pod和生命周期

个人主页&#xff1a;征服bug-CSDN博客 kubernetes专栏&#xff1a;kubernetes_征服bug的博客-CSDN博客 目录 1 什么是 Pod 2 Pod 基本操作 3 Pod 运行多个容器 4 Pod 的 Labels(标签) 5 Pod 的生命周期 1 什么是 Pod 摘取官网: Pod | Kubernetes 1.1 简介 Pod 是可以在 …

linux Ubuntu 更新镜像源、安装sudo、nvtop、tmux

1.更换镜像源 vi ~/.pip/pip.conf在打开的文件中输入: pip.conf [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple按下:wq保存并退出。 2.安装nvtop 如果输入指令apt install nvtop报错&#xff1a; E: Unable to locate package nvtop 需要更新一下apt&a…

mysql8配置binlog日志skip-log-bin,开启、关闭binlog,清理binlog日志文件

1.概要说明 binlog 就是binary log&#xff0c;二进制日志文件&#xff0c;这个文件记录了MySQL所有的DML操作。通过binlog日志我们可以做数据恢复&#xff0c;增量备份&#xff0c;主主复制和主从复制等等。对于开发者可能对binlog并不怎么关注&#xff0c;但是对于运维或者架…

【2023】XXL-Job 具体通过docker 配置安装容器,再通过springboot执行注册实现完整流程

【2023】XXL-Job 具体通过docker 配置安装容器&#xff0c;再通过springboot执行注册实现 一、概述二、安装1、拉取镜像2、创建数据库3、创建容器并运行3、查看容器和日志4、打开网页 127.0.0.1:9051/xxl-job-admin/ 三、实现注册测试1、创建一个SpringBoot项目、添加依赖。2、…

【C语言进阶】数据的存储----整型篇

​ &#x1f341; 博客主页:江池俊的博客 &#x1f4ab;收录专栏&#xff1a;C语言—探索高效编程的基石 &#x1f4bb; 其他专栏&#xff1a;数据结构探索 ​&#x1f4a1;代码仓库&#xff1a;江池俊的代码仓库 &#x1f3aa; 社区&#xff1a;GeekHub &#x1f341; 如果觉得…

nuxt脚手架创建项目

在初始化时遇到一个依赖找不到的问题&#xff0c;记录一下&#xff0c;如有遇到同样问题的小伙伴&#xff0c;希望能给你们一点指引。 从安装脚手架开始&#xff0c;首先 一&#xff1a;安装nuxt脚手架 1. C盘全局安装&#xff1a; npm i -g create-nuxt-app 安装后可creat…

机器学习深度学习——卷积神经网络(LeNet)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——池化层 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 卷积神…