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

news2024/11/25 22:59:00

概念与功能:

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.coloradmin.cn/o/844930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql存储引擎InnoDB

一、存储引擎的简介 MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE 等。 1、InnoDB存储引擎 从MySQL5.5版本之后&#xff0c;默认内置存储引擎是InnoDB&#xff0c;主要特点有&#xff1a; &#xff08;1&#xff09;灾难恢…

分享21年电赛F题-智能送药小车-做题记录以及经验分享

这里写目录标题 前言一、赛题分析1、车型选择2、巡线1、OpenMv循迹2、灰度循迹 3、装载药品4、识别数字5、LED指示6、双车通信7、转向方案1、开环转向2、位置环速度环闭环串级转向3、MPU6050转向 二、调试经验分享1、循迹2、识别数字3、转向4、双车通信5、逻辑处理6、心态问题 …

Zabbix网络拓扑配置

一、简介 网络拓扑功能是一项非常重要的功能&#xff0c;它可以直观展示网络设备主机状态及端口传输速率等指标信息&#xff0c;帮助运维人员快速发现和定位故障问题&#xff1b;Zabbix同样配备了强大的网络拓扑功能&#xff0c;如何使用Zabbix拓扑图功能创建一个公司网络拓扑…

VMware Workstation及CentOS-7虚机安装

创建新的虚机&#xff1a; 选择安装软件&#xff08;这里选的是桌面版&#xff0c;也可以根据实际情况进行选择&#xff09; 等待检查软件依赖关系 选择安装位置&#xff0c;自主配置分区 ​​​​​​​ 创建一个普通用户 安装完成后重启 点击完成配置&#xff0c;进入登陆界面…

mysql 笔记(一)-mysql的架构原理

mysql体系结构 mysql Server 架构自顶向下大致可以分为网络连接层,服务层,存储引擎和系统文件层.体系架构图如下: 网络连接层提供与mysql服务器建立的支持.常见的java.c.python/.net ,它们通过各自API技术与mysql建立连接. 服务层是Mysql Server 的核心,主要包含系统管理和控…

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…

容灾备份服务器怎么样?

容灾备份服务器是一种用于保护信息系统的设备&#xff0c;它可以在系统出现故障时提供备用服务。容灾备份服务器通常包括两个部分&#xff1a;容灾和备份。容灾是指在遭遇灾害时能保证信息系统能正常运行&#xff0c;帮助企业实现业务连续性的目标。备份是为了应对灾难来临时造…

MemFire教程|FastAPI+MemFire Cloud+LangChain开发ChatGPT应用-Part2

基本介绍 上篇文章我们讲解了使用FastAPIMemFire CloudLangChain进行GPT知识库开发的基本原理和关键路径的代码实现。目前完整的实现代码已经上传到了github&#xff0c;感兴趣的可以自己玩一下&#xff1a; https://github.com/MemFire-Cloud/memfirecloud-qa 目前代码主要…

了解JavaSpring

什么是Spring&#xff1f; Spring开发方向&#xff1a;分布式&#xff0c;微服务&#xff0c;网站 Spring技术&#xff08;全家桶&#xff09;&#xff1a;Spring Framework、Spring boot、Spring Cloud Spring Framework&#xff08;4.x&#xff09; 是spring体系中最基础…

盛元广通基于信息平台的医学实验室综合管理系统

医学实验室的飞速发展&#xff0c;为医学科研、突发传染病防治、服务基层医疗等方面提供了有效助力&#xff0c;实验室注重实际应用的研究和实际问题的解决&#xff0c;实验室管理能力也在逐步迈向一个新的台阶&#xff0c;利用信息化技术手段实现对实验室开放共享的有效管理&a…

【Spring Boot】拦截器与统一功能处理

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE进阶 上一篇文章我们讲解了Spring AOP是一个基于面向切面编程的框架&#xff0c;用于将某方面具体问题集中处理&#xff0c;通过代理对象来进行传递&#xff0c;但使用原生Spring AOP实现统一的…

搭建本地开发服务器

搭建本地开发服务器 :::warning 注意 在上一个案例的基础上添加本地开发服务器&#xff0c;请保留上个案例的代码。如需要请查看 Webpack 使用。 ::: 搭建本地开发服务器这一个环节是非常有必要的&#xff0c;我们不可能每次修改源代码就重新打包一次。这样的操作是不是太繁琐…

linux文本三剑客---grep,sed,awk

目录 grep 什么是grep&#xff1f; grep实例演示 命令参数&#xff1a; 案例演示&#xff1a; sed 概念&#xff1a; 常用选项&#xff1a; 案例演示&#xff1a; awk 概念&#xff1a; awk常用命令选项&#xff1a; awk变量&#xff1a; 内置变量 自定义变量 a…

代理模式(C++)

定义 为其他对象提供一种代理以控制(隔离&#xff0c;使用接口)对这个对象的访问。。 应用场景 在面向对象系统中&#xff0c;有些对象由于某种原因(比如对象创建的开销很大&#xff0c;或者某些操作需要安全控制&#xff0c;或者需要进程外的访问等)直接访问会给使用者、或…

出现Error: Cannot find module ‘compression-webpack-plugin‘错误

错误&#xff1a; 解决&#xff1a;npm install --save-dev compression-webpack-plugin1.1.12 版本问题

十、ESP32控制1.54寸240x240彩屏幕(SPI)

1. 运行效果 2. 240x240屏幕介绍 有8个引脚,说明如下 通过SPI协议进行传送数据,用到的芯片是S

ubuntu20.04 docker 下编译 tensorflow-gpu

ubuntu20.04 安装tensorflow-gpu 配置&#xff1a; 系统 ubuntu 20.04 LTS 显卡 GTX 1060 6G 1 安装cudatoolkit &#xff08;我选 CUDA Toolkit 12.2 &#xff09; NVIDIA CUDA Installation Guide for Linux https://docs.nvidia.com/cuda/cuda-installation-guide-linux/in…

数据结构-1

1.2 线性结构树状结构网状结构&#xff08;表 数 图&#xff09; 数据&#xff1a;数值型 非数值型 1.2.3数据类型和抽象数据类型 1.3抽象数据类型 概念小结&#xff1a; 线性表: 如果在独立函数实现的 .c 文件中需要包含 stdlib.h 头文件&#xff0c;而主函数也需要包含 st…

(统计学习方法|李航)第一章统计学习方法概论七八九十节——生成模型与判别模型,分类问题,标注问题,回归问题

目录 一&#xff0c;生成模型与判别模型 二&#xff0c;分类问题 三&#xff0c;标注问题 四&#xff0c;回归问题 一&#xff0c;生成模型与判别模型 P&#xff08;X,Y&#xff09;是联合概率分布 只要是出现联合概率分布&#xff0c;就一定是生成模型 判别方法就是直接去…

【owt】erzio的handler和pipeline

【owt】erzio的PipelineBase::addService licode学习之erizo篇–Pipeline_handle 大神分析的非常细致: 大神 总结:erizo的pipeline的handler是负责实际数据处理的,通过处理链路,将之串联起来 大神还绘制了基础类图: pipleline 负责读写数据包并处理数据包 创建:static Pt…