JS打包工具 Vite

news/2024/10/18 5:43:59/

Vite是 JS 新一代的打包的工具,它所解决的问题,是前端打包慢的问题,随着前端应用复杂度越来越大,项目文件越来越多,通常项目中都是使用 Webpack 进行打包,Webpack是个静态的打包工具,每次改动都会打包所有文件,即使使用 HMR,速度也是很慢。
Vite 的推出旨在加速打包,提高前端开发效率,Vite 的核心就是将项目的代码分为两个部分,一部分是类库,另外一部分是应用逻辑代码。对于类库,开发中是不会修改的,这部分代码只要启动了 dev-server,打包一次,就可以保持不动。大部分前端的开发工作还是在写业务代码、写 CSS,由于都是基于框架开发,类库很多也很大,很明显这种分离可以使代码转换速度提高很多。Vite主要采用了以下几种手段来提高性能:

基于 ESM

ESM 是通过 ES2015 进行模块化,最新的浏览都已经支持ESM,所以可以借助浏览器进行解析,从而减少了代码转换的性能开销。

依赖编译加速

通过esbuild对依赖进行打包,esbuild是 go 语言开发的,性能是 JS打包工具的 10到 100 倍。

业务源代码转换

在业务源代码中,包含 CSS、JS 等需要转换的文件,并不是所有文件都要第一次启动时就进行转换,Vite 中只有文件被请求才会转换,可以看下图,代码做了切分,当前页面不需要的文件不转换。

在这里插入图片描述

组件更新

在 Vite 中,组件变更时,只会将自己以及临近的依赖进行更新,大多时候只会更新自己,并不会对整个应用进行转换打包。

我们来看一个简单的示例,首先初始化并启动项目:

npm create vite@latest my-vue-app -- --template vue
cd my-vue-app
npm i
npm run dev

进入 dev tools,看到并没有 dist 目录,而是直接访问 main.js。可以体验一下,确实速度很快,首次进入比 vuecli快太多了。
在这里插入图片描述
Vite 确实很快,但是目前可能还不能完全替代 webpack,Vite 是不支持老项目的,比如 vue2,现在有很多应用还是 vue2 开发的。


http://www.ppmy.cn/news/1427916.html

相关文章

Java中的==与equals的区别

区别 首先,是运算符,equals()是方法 是一个二元运算符,用于比较两个对象的引用是否相同。当使用 进行比较时,Java会检查两个对象的内存地址是否相同。如果两个对象的内存地址相同,则认为它们是相同的。 如果比较的…

掌握Spring配置艺术:从@Configuration注解说起

Spring框架中Configuration注解深度揭秘 引言 Spring框架是众多Java开发者的首选,它提供了一个全面的编程和配置模型,既适用于小型和大型企业,也适用于微服务架构。在Spring的众多特性中,Configuration注解作为定义Spring bean配…

云原生:10分钟了解一下Kubernetes架构

Kubernetes,作为当今容器编排技术的事实标准,以其强大的功能和灵活的架构设计,在全球范围内得到了广泛的应用和认可。本文将深入简出地探讨Kubernetes的核心架构,帮助大家了解Kubernetes,为今后的高效的学习打下良好的…

mysqlslap压力测试和线程池

目录 1. mysqlslap介绍 2. mysqlslap常用参数 3. 开始测试 3.1 单线程 3.2 多线程 3.3 50和100个并发 3.4 迭代测试 4.结果解释 5.线程池 5.1 开启线程池 5.2 关于线程池的参数 1. mysqlslap介绍 mysqlslap是一个诊断程序,旨在模拟客户端并发访问MySQ…

【大数据】TiDB: A Raft-based HTAP Database

文章目录 数据库知识介绍数据库系统的ACID特性分布式系统和CAP理论关系型数据库与非关系型数据库关系型数据库非关系型数据库 OldSQL、NoSQL、NewSQLOldSQLNoSQLNewSQL OLTP、OLAP、HTAP 前言:为什么选择TiDB学习?pingCAP介绍TiDB介绍TiDB的影响力TiDB概…

天才简史——Sylvain Calinon

一、研究方向 learning from demonstration(LfD)领域的专家,机器人红宝书(Springer handbook of robotics)Robot programming by demonstration章节的合作者。主要研究兴趣包括: 机器人学习、最优控制、几…

asp.net core 8.0 使用 Autofac ioc 容器 具体实例

要在ASP.NET Core 8.0项目中具体实现使用Autofac作为IOC容器,我们将遵循一个明确的示例,从创建新项目到配置Autofac,并演示如何注册和解析服务。 步骤 1: 创建ASP.NET Core 8.0项目 首先,使用Visual Studio或命令行工具创建一个…

【QT学习】7.事件,把文本显示在页面中(文本可变),鼠标指针切换,鼠标左键右键按下,qt设置背景样式

0.创建项目,事件的创建 1.事件的位置 2.这就是多态,子类重写父类函数,子类调用子类函数,也可以调用父类函数。但同函数名 1.要求:文本显示在页面中(文本可变) 1.文本显示在页面的核心代码 主要步…