项目优化相关

1闪屏优化

1、问题:通过js引入css文件打包后js通过生成style标签的形式引入,网络过慢的情况下页面就会出现先显现html后展现样式的状况

Css 文件目前被打包到 js 文件中,当 js 文件加载时,会创建一个 style 标签来生成样式

这样对于网站来说,会出现闪屏现象,用户体验不好

我们应该是单独的 Css 文件,通过 link 标签加载性能才好

优化:【尚硅谷webpack5笔记base部分-CSDN博客】中提取 Css 成单独文件部分

通过安装相关插件然后在webpack中进行配置

npm i mini-css-extract-plugin -D

2兼容性优化postcss

 【尚硅谷webpack5笔记base部分-CSDN博客】中Css 兼容性处理部分

1. 下载包
npm i postcss-loader postcss postcss-preset-env -D
  • 1
2. 配置
  • webpack.prod.js
  • 3. 控制兼容性
    我们可以在 package.json 文件中添加 browserslist 来控制样式的兼容性做到什么程度。

    {// 其他省略"browserslist": ["ie >= 8"]
    }


    想要知道更多的 browserslist 配置,查看browserslist 文档

    以上为了测试兼容性所以设置兼容浏览器 ie8 以上。

    实际开发中我们一般不考虑旧版本浏览器了,所以我们可以这样设置:

    {// 其他省略"browserslist": ["last 2 version", "> 1%", "not dead"]
    }


    4. 合并配置
    webpack.prod.js

3、css压缩

 【尚硅谷webpack5笔记base部分-CSDN博客】中Css 压缩部分

4、sourceMap提高开发效率

[尚硅谷webpack5笔记2-CSDN博客]SourceMap

是什么
SourceMap(源代码映射)是一个用来生成源代码与构建后代码一一映射的文件的方案。

它会生成一个 xxx.map 文件,里面包含源代码和构建后代码每一行、每一列的映射关系。当构建后代码出错了,会通过 xxx.map 文件,从构建后代码出错位置找到映射后源代码出错位置,从而让浏览器提示源代码文件出错位置,帮助我们更快的找到错误根源。

怎么用
通过查看Webpack DevTool 文档可知,SourceMap 的值有很多种情况.

但实际开发时我们只需要关注两种情况即可:

开发模式:cheap-module-source-map

优点:打包编译速度快,只包含行映射
缺点:没有列映射

5、打包构建速度HotModuleReplacement

[尚硅谷webpack5笔记2-CSDN博客]提升打包构建速度

6、oneOf

[尚硅谷webpack5笔记2-CSDN博客]OneOf

为什么

打包时每个文件都会经过所有 loader 处理,虽然因为 test 正则原因实际没有处理上,但是都要过一遍。比较慢。

是什么

顾名思义就是只能匹配上一个 loader, 剩下的就不匹配了。

7、include和exclude

[尚硅谷webpack5笔记2-CSDN博客]Include/Exclude

为什么
开发时我们需要使用第三方的库或插件,所有文件都下载到 node_modules 中了。而这些文件是不需要编译可以直接使用的。

所以我们在对 js 文件处理时,要排除 node_modules 下面的文件。

是什么
include
包含,只处理 xxx 文件

exclude
排除,除了 xxx 文件以外其他文件都处理

8、cache

[尚硅谷webpack5笔记2-CSDN博客]cache

为什么

每次打包时 js 文件都要经过 Eslint 检查 和 Babel 编译,速度比较慢。

我们可以缓存之前的 Eslint 检查 和 Babel 编译结果,这样第二次打包时速度就会更快了。

是什么

对 Eslint 检查 和 Babel 编译结果进行缓存。

9、Thead

[尚硅谷webpack5笔记2-CSDN博客]Thead

为什么
当项目越来越庞大时,打包速度越来越慢,甚至于需要一个下午才能打包出来代码。这个速度是比较慢的。

我们想要继续提升打包速度,其实就是要提升 js 的打包速度,因为其他文件都比较少。

而对 js 文件处理主要就是 eslint 、babel、Terser 三个工具,所以我们要提升它们的运行速度。

我们可以开启多进程同时处理 js 文件,这样速度就比之前的单进程打包更快了。

是什么
多进程打包:开启电脑的多个进程同时干一件事,速度更快。

需要注意:请仅在特别耗时的操作中使用,因为每个进程启动就有大约为 600ms 左右开销。

怎么用
我们启动进程的数量就是我们 CPU 的核数。

10、减少代码体积

[尚硅谷webpack5笔记2-CSDN博客]减少代码体积

Tree Shaking

为什么
开发时我们定义了一些工具函数库,或者引用第三方工具函数库或组件库。

如果没有特殊处理的话我们打包时会引入整个库,但是实际上可能我们可能只用上极小部分的功能。

这样将整个库都打包进来,体积就太大了。

是什么
Tree Shaking 是一个术语,通常用于描述移除 JavaScript 中的没有使用上的代码。

注意:它依赖 ES Module。

怎么用
Webpack 已经默认开启了这个功能,无需其他配置。

Babel


为什么
Babel 为编译的每个文件都插入了辅助代码,使代码体积过大!

Babel 对一些公共方法使用了非常小的辅助代码,比如 _extend。默认情况下会被添加到每一个需要它的文件中。

你可以将这些辅助代码作为一个独立模块,来避免重复引入。

是什么
@babel/plugin-transform-runtime: 禁用了 Babel 自动对每个文件的 runtime 注入,而是引入 @babel/plugin-transform-runtime 并且使所有辅助代码从这里引用。

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

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

相关文章

mysql作业

1.openEuler 二进制方式安装MySQL 8.0.x [rootnode1 ~]# wget -c https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz #获取安装包 [rootnode1 ~]# dnf install tar xz -y#安装 [rootnode1 ~]# groupadd -g 27 -r mysql [rootnode1 ~…

类和对象(1)——开启C++学习之旅

目录 一、过程性编程和面向对象编程 二、类的定义 2.1类的定义语法 2.2类的定义方式 三、类的访问限定符 四、封装 五、类对象模型 5.1类的实例化 5.2类对象的存储方式 六、this指针 6.1什么是this指针 6.2 this指针的特性 一、过程性编程和面向对象编程 C语言是面…

华为校招机试题库2024年(JAVA、Python、C++)

我是一名软件开发培训老师,我的学生已经有上百人通过了华为校招机试,学生们每次考完试,会把题目拿出来一起交流分享。 华为校招机试共三道题目: 100分,200分,300分, 满分600分,时…

通过elementUI学习vue

<template><el-radio v-model"radio" label"1">备选项</el-radio><el-radio v-model"radio" label"2">备选项</el-radio> </template><script>export default {data () {return {radio: 1}…

南京观海微电子----Verilog基础(一)——数据类型、运算符

1. 数据类型 1.1 常量 整数&#xff1a;整数可以用二进制b或B&#xff0c;八进制o或O&#xff0c;十进制d或D&#xff0c;十六进制h或H表示&#xff0c;例如&#xff0c;8’b00001111表示8位位宽的二进制整数&#xff0c;4’ha表示4位位宽的十六进制整数。 X和Z&#xff1a;X…

算法沉淀——动态规划之子序列问题(下)(leetcode真题剖析)

算法沉淀——动态规划之子序列问题 01.最长定差子序列02.最长的斐波那契子序列的长度03.最长等差数列04.等差数列划分 II - 子序列 01.最长定差子序列 题目链接&#xff1a;https://leetcode.cn/problems/longest-arithmetic-subsequence-of-given-difference/ 给你一个整数数…

编码技巧——Springboot工程加密yml配置/Maven引入本地二方包

1. 背景 基于Springboot的工程项目&#xff0c;通常很多信息都是在application.yml中直接明文配置的&#xff0c;比如数据库链接信息&#xff0c;redis链接信息等&#xff1b; 为了安全考虑&#xff0c;公司打算将yml配置文件中的数据库连接信息的账号&#xff0c;密码进行加…

【Django】model模型—模型属性与方法

模型属性 模型当中最重要的属性是 Manager。它是 Django 模型和数据库查询操作之间的接口&#xff0c;并且它被用作从数据库当中 获取实例&#xff0c;如果没有指定自定义的 Manager 默认名称是 objects。Manager 只能通过模型类来访问&#xff0c;不能通过模型实例来访问。 模…

2024-02-25 Unity 编辑器开发之编辑器拓展5 —— Selection

文章目录 1 常用静态成员2 常用静态方法 ​ Selection 主要用来获取当前 Unity 编辑器中选择的对象&#xff0c;只能用于编辑器开发中。 1 常用静态成员 静态成员说明Selection.activeObject获取当前在面板上选择的游戏物体 Object&#xff0c;未选择则返回 Null。选择多个则返…

mini-spring|关于Bean对象作用域以及FactoryBean的实现和使用

需求 FactoryBean 直接配置FactoryBean 获取FactoryBean中的Bean对象 FactoryBean的getObject方法通过反射获取Bean对象 由此省去对实体Dao类的定义 解决方法 对外提供一个可以二次从 FactoryBean 的 getObject 方法中获取对象的功能即可 整体架构 整个的实现过程包括了两部…

Redis持久化的两种方式RDB和AOF详解

小伙伴们好&#xff0c;欢迎关注&#xff0c;一起学习&#xff0c;无限进步 以下内容为学习 Redis 过程中的笔记 文章目录 Redis持久化RDB&#xff08; Redis DataBase &#xff09;触发机制&#xff1a;如何恢复rbd文件&#xff1a;优点&#xff1a;缺点&#xff1a; AOF &…

图形管道(pipeline)

9.3 图形管道 9.3.1 pipeline ​ 图形管道是将 3D 坐标转换为 2D 像素&#xff0c;图形管道可以分为两大部分&#xff1a;第一部分将 3D 坐标转换为 2D 坐标&#xff0c;第二部分将 2D 坐标转换为实际的彩色像素。 Vertex Data -----> Vertex SHADER -------->GEOMETR…

【文献管理】zotero插件4——获取知网pdf、中文文献识别与目录生成

文章目录 zotero获取知网PDFzotero——中文文献识别&#xff08;茉莉花插件&#xff09;学位论文目录生成 zotero获取知网PDF zotero——中文文献识别&#xff08;茉莉花插件&#xff09; 为下载的学位论文添加目录中文文献识别&#xff1a;jasminum 下载pdflabs下载茉莉花插…

C++——类的6个默认成员函数

目录 类中的6个默认成员函数 构造函数 构造函数的特点 初始化列表 隐式类型转换 析构函数 拷贝构造函数 赋值重载 运算符重载 赋值重载 取地址重载 类中的6个默认成员函数 类中的6个默认成员函数根据不同的作用可以分为&#xff1a; 初始化和使用后清理&#xff1a;…

YOLOv8改进,添加GSConv+Slim Neck,有效提升目标检测效果,代码改进(超详细)

目录 摘要 主要想法 GSConv GSConv代码实现 slim-neck slim-neck代码实现 yaml文件 完整代码分享 总结 摘要 目标检测是计算机视觉中重要的下游任务。对于车载边缘计算平台来说&#xff0c;巨大的模型很难达到实时检测的要求。而且&#xff0c;由大量深度可分离卷积层构…

Java Web(十一)--JSON Ajax

JSON JSon在线文档&#xff1a; JSON 简介 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。轻量级指的是跟xml做比较。数据交换指的是客户端和服务器之间业务数据的传递格式。 它基于 ECMAScript (W3C制定的JS规范)的一个子集&#xff0c;采…

Stable Cascade发布:比SDXL更快、更强的图像生成模型

前言 StabilityAI在春节期间发布了新的一代文生图模型Stable Cascade&#xff0c;Stable Cascade是基于Wuerstchen架构包含三阶段的文生图扩散模型&#xff0c;为质量、灵活性、微调和效率设定了新的标准&#xff0c;着重于进一步消除硬件障碍。相比Stable Diffusion XL&#…

《Decoupling Representation and Classifier for Long-Tailed Recognition》阅读笔记

论文标题 《Decoupling Representation and Classifier for Long-Tailed Recognition》 用于长尾识别的解耦表示和分类器 作者 Bingyi Kang、Saining Xie、Marcus Rohrbach、Zhicheng Yan、 Albert Gordo、Jiashi Feng 和 Yannis Kalantidis 来自 Facebook AI 和 新加坡国…

Linux笔记--文件权限

一、相关概念 Linux最优秀的地方之一就在于多人多任务环境。为了让各个使用者有较为保密的文件数据&#xff0c;文件的权限管理尤为重要。 ●文件的可存取身份: owner:文件拥有者 group:文件所属用户组 others:其他人 ●文件权限: r: read&#xff0c;读 文件:是否能查看文件内…

如何创建自己的Spring Boot Starter并为其编写单元测试

当我们想要封装一些自定义功能给别人使用的时候&#xff0c;创建Spring Boot Starter的形式是最好的实现方式。如果您还不会构建自己的Spring Boot Starter的话&#xff0c;本文将带你一起创建一个自己的Spring Boot Starter。 快速入门 创建一个新的 Maven 项目。第三方封装的…