Webpack5

打包工具:将框架(React、Vue),ES6,Less/Sass等语法编译成浏览器能识别的JS、CSS;压缩代码、兼容性处理、提升代码性能等。

一、entry(入口)

指示Webpack 从哪个文件开始打包

二、output(输出)

指示Webpack打包完的文件输出到哪里去,如何命名等

三、loader(加载器)

webpack本身只能处理JS、JSON等资源,其他资源需要借助loader,webpack才能解析

四、plugins(插件)

扩展webpack的功能

五、mode(模式)

  • 开发模式:development
  1. 编译代码,使浏览器能识别运行
  2. 代码质量检查,梳理代码规范
  • 生产模式:production
  1. 优化代码运行性能 
  2. 优化代码打包速度

//webpack.config.js
const path = require("path");// nodejs核心模块,专门用来处理路径问题
const ESLintWebpackPlugin = require('eslint-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CssMinimizePlugin = require('css-minimize-plugin');module.exports = {//入口entry:"./src/main.js",//相对路径//输出output:{//所有文件的输出路径//_dirname nodejs的变量,代表当前文件的文件夹目录path:path.resolve(_dirname,"dist"),//绝对路径//入口文件打包输出文件名filename:"static/js/main.js",// 自动清空上次打包内容 原理:在打包前,将path整个目录内容清空,再进行打包clean: true,},//加载器module:{rules:[//loader的配置// css配置{test:/\.css$/, //只检测.css文件use:[//执行顺序:从右都左(从下到上)//"style-loader",// 将js中的css通过创建style标签添加html文件中生效MiniCssExtractPlugin.loader,// 提取css成单独文件"css-loader",// 将css资源编译成commonjs的模块到js中{loader:"postcss-loader",options:[postcssOptions:{plugins:["postcss-preset-env",//能解决大多数样式兼容性问题],},],},]},// less配置{test:/\.less$/, // loader:'xxx', //只能使用1个loaderuse:[// 使用多个loader//"style-loader",// 将js中的css通过创建style标签添加html文件中生效MiniCssExtractPlugin.loader,// 提取css成单独文件"css-loader",// 将css资源编译成commonjs的模块到js中{loader:"postcss-loader",options:[postcssOptions:{plugins:["postcss-preset-env",//能解决大多数样式兼容性问题],},],},"less-loader", // 将less编译成css文件]},// Sass/Scss配置{test:/\.s[ac]ss$/, use:[//"style-loader",// 将js中的css通过创建style标签添加html文件中生效MiniCssExtractPlugin.loader,// 提取css成单独文件"css-loader",// 将css资源编译成commonjs的模块到js中{loader:"postcss-loader",options:[postcssOptions:{plugins:["postcss-preset-env",//能解决大多数样式兼容性问题],},],},"sass-loader", // 将sass编译成css文件]},// 图片配置{test:/\.(png|jpe?g|gif|webp|svg)$/,type:"asset",parser:{dataUrlCondition:{//小于10kb的图片转base64,优点:减少请求数量 缺点:体积会更大maxSize:10*1024, // 10kb},},generator:{//输出图片名称  [hash:10] hash值取前10位filename: "static/images/[hash:10][ext][query]",},},// 字体图表及其他资源配置{test:/\.(ttf|woff2?|map3|map4|avi)$/,type:"asset/resourse",generator:{//输出名称filename: "static/desia/[hash:10][ext][query]",},},// babel配置{test:/\.js$/,exclude:/node_modules/, // 排除node_moudles中的js文件loader: "babel-loader"//options:{//    //智能预设//    presets: ["@babel/preset-env"],//},},]},//插件plugins:[//ESLint的配置new ESLintPlugin({//检测哪些文件context: path.resolve(_dirname,"src"),}),new HtmlWebpackPlugin({// 模板:以public/index.html文件创建新的html文件(自动引入打包输出的资源)template:path.resolve(_dirname,"public/index.html"),}),new MiniCssExtractPlugin({filename:"static/css/main.css",}),new CssMinimizePlugin(),],//开发服务器:不会输出资源,在内存中编译打包的devServer:{host:"localhost",// 启动服务器域名port:"3000",// 启动服务器端口号open:true, //是否自动打开浏览器},//模式mode:"development",
};

Eslint :可组装的Javascript和JSX检查工具(检测js和jsx语法的工具,可配置各项功能)

文档:https://eslint.nodejs.cn/docs/latest/use/getting-started

Babel:JavaScript编译器。主要用于将ES6语法编写的代码转换为向后兼容的JavaScript语法,以便能够运行在当前和旧版本的浏览器或其他环境中

// package.json文件
"script":{"dev":"webpack serve --config ./config/webpack.dev.js",//启动开发服务器,内存编译打包没有输出"build":"webpack --config ./config/webpack.prod.js",//直接打包输出
}

生产环境:

提取css成单独文件:css打包到js文件中,当js文件加载时会创建一个style标签来生成样式,这样对网站的用户体验不好,会出现闪屏现象

解决:使用MiniCssExtractPlugin,提取css成单独文件,通过link标签加载

样式兼容性处理:postcss-loader

//package.json文件
"browserslist":[//"ie >= 8","last 2 version","> 1%","not dead"
]

css压缩:CssMinimizePlugin

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

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

相关文章

在树莓派上部署个人用的Git管理自己的代码

在树莓派服务器端: apt install git # 安装完成后在想要用来存储数据的文件夹下执行命令 git init --bare xxx.git # xxx可以是项目名,到时候本地git clone下来的就是这个文件夹名字 # 因为是自己局域网的,我没设权限,直接暴力给…

【FPGA】Verilog:解码器 | 实现 2-4 解码器

实践内容:解释 2 至 4 解码器的结果和仿真过程 (包括真值表创建和 k 映射、AND 门)。 0x00 解码器(Decoder) 解码器是一种根据输入信号从多个输出 bit 中只选择一个的设备。 例如,如果有一个解码器接收一个 2 位二进…

基于spacy的句法依存、实体识别、分析

文章目录 简介spaCy特性: 系统环境与版本安装应用示例参考文献 简介 spaCy spaCy 是一个 Python 和 CPython 的 NLP 自然语言文本处理库。因此它是一个非常快的库。它建立在最新的研究基础上,从设计的第一天起就被用于实际产品中。 spaCy 自带预训练的…

好用的硬盘分区工具,傲梅分区助手 V10.2

傲梅分区助手软件可以帮助用户在硬盘上创建、调整、合并、删除分区,以及管理磁盘空间等操作。它可以帮助你进行硬盘无损分区操作。 支持系统 目前这款软件支持 Windows 7、Windows 8、Windows 10、Windows 11 等个人系统,还支持 Windows 2012/2016/2019…

五金品牌网站建设的效果如何

五金产品多而广,无论零售还是批发,都有很高需求,市场中也林立着众多大小品牌,在实际经营中,五金也分为多个类目,同时高需求下相关企业也面临着一些痛点: 1、品牌传播难 对普通消费者来说&…

android下的app性能测试应主要针对那些方面,如何开展?

如何开展安卓手机下的App性能测试,对于优秀的测试人员而言,除了要懂得性能测试的步骤流程外,还应该懂的性能测试的一些其他知识,比如性能测试指标、各指标的意义,常用的性能测试工具、如何查看结果分析等等知识。所以本…

linux空洞文件以及多线程写入

介绍空洞文件 Linux空洞文件(hole file)是一种特殊类型的文件,其大小可能超过实际存储的数据量。在空洞文件中,文件系统会为文件分配磁盘空间,但实际上只在文件中存储了部分数据,其余部分被称为"空洞…

linux应用程序直接return与exit的区别

在Linux应用程序中,可以使用return语句直接从main函数返回。这将导致程序终止并返回给操作系统。然而,有时候使用exit函数比直接使用return语句更有优势,以下是一些原因: 清理资源:exit函数可以确保在程序终止之前执行…

C/C++常见面试知识总结(三)

C语言是一种通用计算机(高级)编程语言;面向过程;广泛应用于计算机系统设计以及应用程序编写;设计目标,是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行…

01_Web开发基础之HTML+CSS

Web开发基础之HTMLCSS 学习目标和内容 1、能够描述Web开发需要的技术点 2、能够描述HTML的作用 3、能够实现一个列表 4、能够实现创建一个表格 5、能够实现一个表单 6、能够描述CSS的作用 7、能够使用选择器获取到标签 8、能够使用CSS设置字体的颜色和大小 一、Web开发相关介绍…

Python+Selenium UI自动化测试环境搭建及使用

一、什么是Selenium ? Selenium 是一个浏览器自动化测试框架,它主要用于web应用程序的自动化测试,其主要特点如下:开源、免费;多平台、浏览器、多语言支持;对web页面有良好的支持;API简单灵活易…

window同时安装java8和java11

背景 在日常工作中,使用的工具,有一些java写的比较老的工具,环境要求是1.8,有一些java写的工具,环境要求是java11以上。 痛点 使用java写的工具要求是1.8的java,但是window电脑上只安装了java11。就会报下面的错误 …

pytorch中数据预处理模块:transforms详解

1 tranforms概述 1.1 torchvision介绍 torchvision是pytorch的计算机视觉工具包,主要有以下三个模块: torchvision.transforms:提供了常用的一系列图像预处理方法,例如数据的标准化,中心化,旋转&#xff…

Redis实现延迟队列

目录 一、什么是延时队列 二、延时队列的应用 三、举例说明 我的设计思想: 一、什么是延时队列 延时队列相比于普通队列最大的区别就体现在其延时的属性上,普通队列的元素是先进先出,按入队顺序进行处理,而延时队列中的元素在入队时会指定…

策略+工厂完成支付方式选择(微信/支付宝),简单实现

需求 传参String payType wechat 使用微信支付传参String payType ali 使用支付宝支付代码不允许出现if-else 思路 把支付当作一个行为,代码中当作一个接口,payService。2个实现类,分别是微信支付实现类WeChatPayServiceImpl&#xff0c…

4G无线工业级路由器在智能制造设备互联互通中的角色

随着工业技术的不断发展和进步,智能制造已经成为了现代制造业的重要趋势和发展方向。而在智能制造过程中,设备之间的互联互通是至关重要的一环。在这个过程中,4G无线工业级路由器扮演着重要的角色,它提供了稳定可靠的网络连接&…

c语言->浅学结构体

系列文章目录 文章目录 前言 ✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:橘橙黄又青_C语言,函数,指针-CSDN博客 目的:学习结构体基础内容&am…

6.【自动驾驶与机器人中的SLAM技术】鲁邦核函数的含义和应用

目录 1. 给ICP和NDT配准添加柯西核函数1.1 代码实现 2. 将第1部分的robust loss引入IncNDTLO和LooselyLIO,给出实现和运行效果3. 从概率层面解释NDT残差和协方差矩阵的关系,说明为什么NDT协方差矩阵可以用于最小二乘4. 为LOAM like LO设计一个地面点云提…

从菜鸟到专业人士:来自真实 PRD 写作经验的 5 个改变游戏规则的产品管理课程

产品管理是一个复杂且具有挑战性的角色。PRD(即产品需求文档)就像构建产品的蓝图,可将其视为指导开发团队创造令人惊叹的产品的详细路线图。本文除了介绍产品经理如何写好PRD,也将进一步阐述产品经理应该学习哪些技能?…

玩转树莓派之系统安装篇

介绍 树莓派是树莓派基金会下的一个明星产品(单板计算机),已经迭代到第五代了;它性能强大、开源、拓展性强、体积小,搞物联网开发的人基本都听说过这个玩意!笔者手上刚好有一块4B的板子,让我们…