深入浅出Vite:Vite打包与拆分
一、背景
在生产环境下,为了提高页面加载性能,构建工具一般将项目的代码打包(bundle)到一起,这样上线之后只需要请求少量的 JS 文件,大大减少 HTTP 请求。当然,Vite 也不例外,默认情况下 Vite 利用底层打包引擎 Rollup 来完成项目的模块打包。
某种意义上来说,对线上环境进行项目打包是一个必须的操作。但随着前端工程的日渐复杂,单份的打包产物体积越来越庞大,会出现一系列应用加载性能问题,而代码分割可以很好地解决它们。
当然,在实际的项目场景中,只用 Vite 默认的策略是不够的,我们会更深入一步,学习 Rollup 底层拆包的各种高级姿势,实现自定义拆包,同时我也会带大家通过实际案例复现 Rollup 自定义拆包经常遇到的坑——循环引用问题,一起分析问题出现的原因,也分享一些自己的解决思路和方案,让大家对 Vite 及 Rollup 的代码分割有更加深入的掌握。
不过,在正式讲解之前,给大家介绍几个专业概念:bundle、chunk、vendor。
- bundle:指的是整体的打包产物,包含 JS 和各种静态资源。
- chunk:指的是打包后的 JS 文件,是 bundle 的子集。
- vendor:是指第三方包的打包产物,是一种特殊的 chunk。
二、Code Splitting 解决的问题
在传统的单 chunk 打包模式下,当项目代码越来越庞大,最后会导致浏览器下载一个巨大的文件,从页面加载性能的角度来说,主要会导致两个问题
相关文章:
深入浅出Vite:Vite打包与拆分
一、背景 在生产环境下,为了提高页面加载性能,构建工具一般将项目的代码打包(bundle)到一起,这样上线之后只需要请求少量的 JS 文件,大大减少 HTTP 请求。当然,Vite 也不例外,默认情况下 Vite 利用底层打包引擎 Rollup 来完成项目的模块打包。 某种意义上来说,对线上环…...

大数据ETL工具Kettle
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言最近公司在搞大数据数字化,有MES,CIM,WorkFlow等等N多的系统,不同的数据源DB,需要将这些不同的数据源DB里的数据进行整治统一…...
大学物理(上)-期末知识点结合习题复习(4)——质点运动学-动能定理 力做功 保守力与非保守力 势能 机械能守恒定律 完全弹性碰撞
目录 1.力做功 恒力作用下的功 变力的功 2.动能定理 3.保守力与非保守力 4.势能 引力的功与弹力的功 引力势能与弹性势能 5.保守力做功与势能的关系 6.机械能守恒定律 7.完全弹性碰撞 题1 题目描述 题解 题2 题目描述 题解 1.力做功 物体在力作用下移动做功…...

这两个小众的资源搜索工具其实很好用
01 小不点搜索是一个中国网络技术公司开发的网盘搜索引擎,该网站通过与多个主流网盘进行整合,为用户提供一种快速查找和下载文件的方式。小不点搜索因其高效性、便利性和实用性受到了广大用户的喜爱。 在技术实现上,小不点搜索拥有先进的搜…...
Java设计模式(六)— 单例模式1
系列文章目录 单例模式介绍 单例模式之静态常量饿汉式 单例模式之静态代码饿汉式 单例模式之线程不安全懒汉式 文章目录 系列文章目录前言一、单例设计模式介绍二、单例设计模式八种方式三、单例—静态常量饿汉式1.静态常量饿汉式介绍2.静态常量饿汉式案例3.静态常量饿汉式优缺…...

iOS -- isa指针
isa指针:isa指针是一个指向对象所属类或元类的指针。它决定了对象可以调用的方法和属性。isa指针在对象的结构中存在,并且在运行时会被自动设置。isa 指针,表示这个对象是一个什么类。而 Class 类型, 也就是 struct objc_class * …...
【SA8295P 源码分析】14 - Passthrough配置文件 /mnt/vm/images/linux-la.config 内容分析
系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总》 本文链接:《【SA8295P 源码分析】14 - Passthrough配置文件 /mnt/vm/images/linux-la.config 内容分析》 透传配置文件位于:qnx.git\apps\qnx_ap\target\hypervisor\gvm\ivi\la\linux-la.config 它是在QNX Ho…...

新型糖基化氨基酸:Fmoc-Thr((Ac4Galβ1-3)Me,Ac4Neu5Acα2-6AcGalNAcα)-OH,化学CAS号174783-92-7
●英文名:Fmoc-Thr((Ac4Galβ1-3)Me,Ac4Neu5Acα2-6AcGalNAcα)-OH ●外观以及性质: Fmoc-Thr((Ac4Galβ1-3)Me,Ac4Neu5Acα2-6AcGalNAcα)-OH中通过对蛋白进行复杂蛋白糖基化修饰,细胞产生了极大丰度的蛋白质类型;通过对各类糖基…...

网络安全(黑客)怎么自学?
最近看到很多问题,都是小白想要转行网络安全行业咨询学习路线和学习资料的,作为一个培训机构,学习路线和免费学习资料肯定是很多的。机构里面的不是顶级的黑阔大佬就是正在学习的同学,也用不上这些内容,每天都在某云盘…...
Vue学习 之 MacOS 安装 webpack
Vue学习 之 MacOS 安装 webpack webpack 简介 Webpack 是一个非常流行的前端构建工具,它可以将多个模块(包括CSS、JavaScript、图片等)打包成一个或多个静态资源文件(bundle),以便用于部署到生产环境。We…...

媒介易教你海外品牌推广:如何选择适合的新闻通稿发布平台?
在进行海外品牌推广时,选择合适的海外新闻通稿发布第三方平台是提高品牌曝光度和影响力的重要一环。这些平台可以帮助企业将新闻内容传播到全球范围内的媒体和受众,为品牌推广提供更广阔的机会。然而,选择合适的发布平台并不容易,…...
网络安全的学习路线是怎么样的?
最近看到网上有很多人在问诸如:“怎样成为网络安全工程师”等相关问题,这可能与近几年网络安全事件频发,国家对于互联网信息安全和互联网舆情的重视程度不断提升有关,网络信息安全工程师随之成为炙手可热的职业。关于职业前景的详…...

QT学习07:五种按钮控件
文章首发于我的个人博客:欢迎大佬们来逛逛 文章目录 抽象类:QAbstractButtonQPushButtonQToolButtonQCommandLinkButtonQRadioButtonQCheckBoxQButtonGroup 抽象类:QAbstractButton 是所有按钮类的祖先。 QAbstractButton的信号:…...

chatgpt赋能python:Python如何截图运行结果
Python如何截图运行结果 介绍 Python是一种高级编程语言,非常流行。它具有许多有用的功能和库,使其成为许多开发人员的首选编程语言之一。但是,当您运行Python程序并需要与他人共享结果时,您可能需要截图运行结果。在本文中&…...
Baumer工业相机堡盟工业相机如何通过BGAPISDK使用JPEG图像压缩功能(C#)
Baumer工业相机堡盟工业相机如何通过BGAPISDK使用JPEG图像压缩功能(C#) Baumer工业相机Baumer工业相机BGAPISDK和JPEG图像压缩功能的技术背景Baumer工业相机通过BGAPISDK使用JPEG图像压缩功能1.引用合适的类文件2.使用BGAPISDK设置堡盟相机JPEG图像压缩模…...
RT-Thread FAL组件
目录 1、FAL介绍2、使用FAL2.1 下载FAL软件包2.2 FAL移植2.2.1 定义flash设备2.2.2 定义flash设备表&分区表2.2.3 加入到mdk工程3、MSH测试1、FAL介绍 FAL(Flash Abstraction Layer) Flash抽象层,是对Flash及基于Flash的分区进行管理、操作的抽象层,对上层统一了Flash及分…...

【git切换分支/tag】git stash保存暂不提交的更改
目录 问题git stash使用方法git stash pop 还原修改 git stash使用、修改指定tag的代码 其他git指令 问题 情景:分支1上开发新功能,临时切换到其他分支或tag上修改bug。 1、直接切换:如果没有冲突,分支1的修改会带到要切换的分支…...

【爬虫】4.5 实践项目——爬取当当网站图书数据
目录 1. 网站图书数据分析 2. 网站图书数据提取 3. 网站图书数据爬取 (1)创建 MySQL 数据库 (2)创建 scrapy 项目 (3)编写 items.py 中的数据项目类 (4)编写 pipelines_1.py …...

Socket 编程:基础概念辨析
文章目录 参考Socket APIBSD UNIX 操作系统BSD UNIX 与 Socket API Socket套接字套接字地址套接字 VS 套接字地址套接字的表示方法 TCP 套接字与 UDP 套接字TCP 套接字监听套接字连接套接字 UDP套接字 TCP 服务器端与 TCP 客户端通信的基本流程服务器端客户端 参考 项目描述刘…...
git lfs下载指定文件git lfs pull --include=“*.bin“
git lfs pull --include"*.bin"...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...

uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...