前端构建工具vite的优势
1. 极速冷启动
- Vite 使用原生 ES 模块 (ESM) 在开发环境下进行工作。相比于传统构建工具需要打包所有的文件,Vite 只在浏览器请求模块时动态加载所需的文件。
- 无打包冷启动:无需预先打包,项目启动非常快,尤其对于大型项目效果更明显。
2. 模块热替换 (HMR) 更加快速
- Vite 内置了高效的模块热替换 (Hot Module Replacement, HMR) 功能,更新某个模块时,Vite 只会精确地替换被更改的模块,不会像传统构建工具一样重新构建整个应用。
- HMR 响应更快:当你在开发时修改文件,Vite 能快速更新页面内容,极大提升开发体验。
3. 按需编译
- 在开发环境下,Vite 会根据浏览器的请求按需编译代码,而不是一次性编译所有文件。这意味着如果某些模块从未被导入,就不会被编译,进一步提高了开发时的性能。
4. 更好的现代化支持
- Vite 默认支持现代浏览器,利用原生 ES 模块和最新的 JavaScript 特性,不需要为老旧浏览器生成复杂的代码或 polyfill。这使得 Vite 的编译输出更轻量。
- 轻量级的生产构建:生产环境使用 Rollup 打包,确保最终打包质量且优化文件大小。
5. 内置优化
- Vite 内置对 TypeScript、JSX、CSS、JSON 等的支持,无需额外配置即可使用现代前端特性。
- 自动依赖预构建:Vite 会自动预构建较大的依赖包(例如 React、Vue 等),减少了这些依赖的解析开销,加快页面加载速度。
6. 插件生态与扩展性
- Vite 有着灵活的插件机制,基于 Rollup 插件系统,支持大部分 Rollup 插件,开发者可以方便地扩展功能。
- 支持多种框架:Vite 原生支持 Vue、React、Preact 等框架,并有很好的 TypeScript 支持。
7. 优化的生产环境构建
- Vite 在生产模式下会使用 Rollup 进行打包,Rollup 是一个成熟且优化的打包工具,能生成体积小、性能优良的打包文件。
- 轻量级打包:通过树摇和代码分割等优化技术,生成的最终构建包体积更小、加载更快。
8. CSS/JS 处理优化
- Vite 内置了对 CSS 和 JS 的处理优化,CSS 可以按需加载,JS 代码可以模块化分割,且支持动态导入。
9.适用场景
Vite 特别适合那些希望快速开发、追求现代工具链的开发者,尤其是使用 Vue、React、Svelte 等现代框架的项目。
vite和webpack构建对比图
vite:
webpack:
10.Vite 和 Webpack优缺点
1. 启动速度
- Vite:
- 优点:Vite 利用浏览器的原生 ES 模块(ESM)加载机制,不需要对整个项目进行打包,因此启动速度极快。它只会在浏览器请求某个模块时编译相关文件,尤其在大型项目中,冷启动时间大大缩短。
- 缺点:Vite 的这种按需编译模式在开发环境中非常快,但在不支持原生 ES 模块的旧浏览器中,可能需要特殊处理。
- Webpack:
- 优点:Webpack 在启动时需要对整个项目进行一次完整打包,启动时间较长,但它会缓存构建结果,重复构建时速度会有所提升。
- 缺点:冷启动时间较慢,尤其是对于大型项目,Webpack 启动时间可能会显著拖延开发效率。
2. 模块热替换(HMR)
- Vite:
- 优点:由于 Vite 采用了基于 ES 模块的动态加载机制,它可以精确替换被修改的模块,HMR 速度非常快,通常是毫秒级响应。
- 缺点:HMR 的性能与项目模块的复杂度有关,对于特别复杂的项目,HMR 的维护可能需要调整。
- Webpack:
- 优点:Webpack 也支持模块热替换,且经过多年的优化和实践,HMR 已经相当成熟,适用于各类场景。
- 缺点:由于 Webpack 打包方式的特点,模块更新时,可能需要替换更多的文件,导致 HMR 速度较慢,特别是在大规模项目中。
3. 开发模式
- Vite:
- 优点:在开发模式下,Vite 不会打包整个应用,它基于 ESM 直接提供服务,因此开发时的响应速度非常快。
- 缺点:需要现代浏览器支持 ES 模块。如果需要兼容老版本浏览器,可能需要额外配置。
- Webpack:
- 优点:Webpack 使用一个开发服务器(如
webpack-dev-server
)来提供开发环境,经过多年的完善,其开发模式能够支持复杂的构建和兼容性处理。 - 缺点:由于需要打包整个应用,构建过程较慢,尤其在项目规模变大的情况下。
- 优点:Webpack 使用一个开发服务器(如
4. 生产环境打包
- Vite:
- 优点:Vite 在生产环境中使用 Rollup 进行打包,具有更细粒度的代码分割和更优化的打包结果。最终生成的打包文件更轻量、加载更快。
- 缺点:Rollup 对某些特殊构建需求或插件生态的支持可能没有 Webpack 那么成熟,可能需要手动调整或额外配置。
- Webpack:
- 优点:Webpack 通过多年的发展,生产环境的构建功能非常强大,支持代码分割、懒加载、Tree Shaking、插件系统等多种优化技术,生态非常丰富。
- 缺点:Webpack 的配置复杂,打包速度可能相对较慢,尤其在处理大规模应用时,构建时间可能较长。
5. 配置复杂度
- Vite:
- 优点:Vite 提供了开箱即用的默认配置,极大简化了开发者的工作。特别是对于 Vue、React 等现代框架,Vite 原生支持,无需复杂的配置即可启动。
- 缺点:Vite 的插件生态尚在发展中,部分复杂场景下,可能需要开发者深入了解 Rollup 及其插件系统进行定制化配置。
- Webpack:
- 优点:Webpack 提供了强大的自定义配置能力,可以处理几乎所有的前端需求,且拥有丰富的插件和 Loader 来扩展功能。
- 缺点:Webpack 的配置较为复杂,新手开发者需要花费较多时间来学习和调试其配置文件。
6. 依赖处理
- Vite:
- 优点:Vite 会自动预构建依赖,使用
esbuild
来处理依赖的编译,esbuild
使用 Go 编写,编译速度极快,因此依赖处理非常高效。 - 缺点:对于一些非常复杂或较旧的依赖库,可能需要额外处理其兼容性问题。
- 优点:Vite 会自动预构建依赖,使用
- Webpack:
- 优点:Webpack 的依赖处理机制较为成熟,兼容性好,能够很好地处理不同版本、不同格式的依赖。
- 缺点:依赖处理和打包时间较长,特别是当项目依赖较多时,Webpack 的构建时间可能会明显增加。
7. 插件生态
- Vite:
- 优点:Vite 的插件系统基于 Rollup 插件机制,且具有很强的扩展性。Vite 的现代化设计使其插件开发较为简便,生态正在快速成长。
- 缺点:虽然插件生态在快速发展,但相对于 Webpack,Vite 的插件数量和成熟度仍然稍显不足。
- Webpack:
- 优点:Webpack 拥有非常成熟的插件生态系统,几乎可以找到适用于任何需求的插件,支持从性能优化、代码分割、到兼容性处理等各种场景。
- 缺点:插件多样性和配置复杂度可能会增加开发者的学习成本,某些插件可能需要额外调整配置才能正常工作。
8. 兼容性
- Vite:
- 优点:Vite 专注于现代浏览器的开发体验,开发时使用的是原生 ES 模块,因此对于现代开发有非常好的支持。
- 缺点:如果需要支持 IE11 等老旧浏览器,可能需要进行一些额外的 polyfill 和配置。
- Webpack:
- 优点:Webpack 可以很好地支持各种现代与旧版浏览器,并提供大量工具和插件来帮助处理浏览器兼容性问题。
- 缺点:为旧版浏览器提供兼容支持通常会增加打包复杂性和配置时间。
总结
特性 | Vite 优点 | Vite 缺点 | Webpack 优点 | Webpack 缺点 |
---|---|---|---|---|
启动速度 | 极速冷启动,适合大型项目 | 仅现代浏览器支持最佳 | 经过多次优化,支持缓存 | 冷启动较慢,特别是大型项目 |
HMR | 高效的热更新,毫秒级响应 | 对特别复杂项目 HMR 效果可能减弱 | HMR 支持成熟 | HMR 速度较慢 |
开发模式 | 基于 ESM 的快速开发模式 | 现代浏览器支持最佳 | 功能强大,适应各种需求 | 打包过程较慢 |
生产环境打包 | 使用 Rollup 打包,打包结果轻量优化 | 需要 Rollup 插件支持,生态不如 Webpack 完善 | 生态成熟,功能丰富 | 构建时间可能较长,配置复杂 |
依赖处理 | 使用 esbuild 预构建依赖,编译速度快 | 旧依赖库可能需要额外处理 | 依赖处理成熟 | 依赖处理速度相对较慢 |
插件生态 | 插件开发简单,生态快速成长 | 插件数量和成熟度不如 Webpack | 插件丰富,几乎支持所有场景 | 插件多样性增加了配置复杂度 |
兼容性 | 支持现代浏览器的最佳开发体验 | 兼容旧浏览器需要额外配置 | 良好的旧浏览器兼容性 | 为旧浏览器提供支持可能增加打包体积与复杂度 |
适用场景
- Vite:适合现代开发项目,特别是使用 Vue、React 等框架的中小型或大型项目,开发体验流畅。
- Webpack:适合兼容性要求高、复杂度高的大型项目,特别是需要处理复杂的构建需求。
vite官网:https://cn.vite.dev/guide/why.html
相关文章:
前端构建工具vite的优势
1. 极速冷启动 Vite 使用原生 ES 模块 (ESM) 在开发环境下进行工作。相比于传统构建工具需要打包所有的文件,Vite 只在浏览器请求模块时动态加载所需的文件。无打包冷启动:无需预先打包,项目启动非常快,尤其对于大型项目效果更明…...
hive查询语句
1.基本语法 SELECT [ALL | DISTINCT]select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BYcol_list] [HAVING where_condition] [ORDER BYcol_list] [CLUSTER BYcol_list | [DISTRIBUTE BY col_list] [SORT BY col_list] ] [LIMIT number] …...
【AIGC】2024-ECCV-ControlNet++:通过有效的一致性反馈改进条件控制
2024-ECCV-ControlNet: Improving Conditional Controls with Efficient Consistency Feedback ControlNet:通过有效的一致性反馈改进条件控制摘要1. 引言2. 相关工作2.1 基于扩散的生成模型2.2 可控的文本到图像扩散模型2.3 语言和视觉奖励模型 3. 方法3.1. 初步3.…...
Mysql5.7变为GreatSQL 8.0.32-25过程中,SQL语句报错及解决方案
考虑兼容国产化数据库,现需要将Mysql5.7变为GreatSQL,在执行部分sql时,发现在Mysql5.7无报错,在GreatSQL有报错,在此记录一下遇到的几个错误。 1.ERROR 1231 (NO_AUTO_CREATE_USER) 1.1.报错提示 ERROR 1231 (42000…...
Qt 使用QAxObject将QTableView数据导出到Excel表格
这是我记录Qt学习过程的第6篇心得文章,主要是方便自己编写的应用程序导出Excel数据的,走了不少弯路直接上代码。 实现代码: //人员信息导出 ui->pbtn2->setEnabled(false); // 打开文件对话框,选择 excel文件 QString fil…...
fastGpt
参考本地部署FastGPT使用在线大语言模型 1 rockylinx 1 ollama安装 在rockylinux中安装的,ollama由1.5G,还是比较大,所有采用在windows下下载,然后安装的方式,linux安装 tar -C /usr -xzf ollama-linux-amd64.tgz #…...
如何全方位应对服务可用性的挑战
在数字化转型的浪潮中,运维团队正站在企业IT架构的核心位置,面对着前所未有的挑战。服务响应时间和失败率,作为衡量服务质量的重要指标,一直备受关注。然而,在追求这两项指标优化的同时,运维团队还需关注其…...
二进制方式部署k8s集群
目标任务: 1、Kubernetes集群部署架构规划 2、部署Etcd数据库集群 3、在Node节点安装Docker 4、部署Flannel网络插件 5、在Master节点部署组件(api-server,schduler,controller-manager) 6、在Node节点部署组件(kubelet,kube-proxy) 7、查看集群状态 8、运行⼀个测…...
Vivado时序报告七:Report Clock NetworkReport Clock Interaction详解
目录 一、前言 二、Report Clock Network 2.1 Report Clock Network流程 2.2 Report Clock Network报告 三、Report Clock Interaction 3.1 示例设计 3.2 配置选项 3.2.1 Options 3.2.2 Timer_Settings 3.3 Clock Interaction报告 3.3.1 Clock Pair Classification …...
HarmonyOS 组件样式@Style 、 @Extend、自定义扩展(AttributeModifier、AttributeUpdater)
1. HarmonyOS Style 、 Extend、自定义扩展(AttributeModifier、AttributeUpdater) Styles装饰器:定义组件重用样式 ;Extend装饰器:定义扩展组件样式 自定义扩展:AttributeModifier、AttributeUpdater 1.1. 区…...
信息安全工程师(73)网络安全风险评估过程
一、确定评估目标 此阶段需要明确评估的范围、目标和要求。评估目标通常包括特定的网络系统、信息系统或网络基础设施,评估范围可能涉及整个组织或仅特定部门。明确评估要求有助于确保评估过程的针对性和有效性。 二、收集信息 在评估开始之前,需要对目标…...
在MacOS玩RPG游戏 - RPGViewerPlus
背景知识 由于我一直使用Mac电脑,所以一直对Mac如何玩RPGMV/RPGMZ游戏的方式有进一步的想法。 网上能给出的方案都是自行启动一个HTTP服务进行,进行服务加载。这个方法有效,但兼容性较差。涉及到自定义功能模块的游戏,都会有报错…...
2024.10.27 直接插入排序 非递归后序遍历(复杂版)
直接插入排序 思路:用temp变量存放需要插入前面有序序列的变量,然后用里面的那个for循环寻找到需要插入的位置。 额外注意的点:arr[j1]temp;这个是因为内置循环每次出来之后所指向的位置是我们要插入的位置的前一个(-1或者插入…...
Ubuntu 22.04系统启动时自动运行ROS2节点
在 Ubuntu 启动时自动运行 ROS2 节点的方法 环境:Ubuntu 系统,ROS2 Humble,使用系统自带的 启动应用程序 目标:在系统启动时自动运行指定的 ROS2 节点 效果展示 系统启动后,自动运行小乌龟节点和键盘控制节点。 实践…...
张三进阶之路 | 基于Spring AOP的Log收集
前情提要 📌 张三对于公司的日志处理系统不满意,认为其性能不佳且功能有限。为了展示自己的能力和技术实力,他决定利用Spring AOP(面向切面编程)开发一个更高效的日志处理系统,并将其存储在Redis中。 首先…...
ubuntu新装ubuntu,重启黑屏
现象:双系统电脑向移动硬盘安装Ubuntu系统后,重启黑屏并显示Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists possible device or file completions. 又拔下无法启…...
太极安全监控系统0.8
完善后的代码及功能详细介绍 完善后的代码 python import os import sys import subprocess import re import datetime import threading import tkinter as tk from tkinter import messagebox, simpledialog, ttk import scapy.all as scapy import whois import numpy as …...
E-清楚姐姐的布告规划【01背包】
就当一个01背包写就行,只不过需要保证不交叉,w[i]覆盖i点,用一个if来判断即可 #include<bits/stdc.h> #define int long long using namespace std; int w[5005]; int f[5005]; int t,n,m; signed main() {cin>>t;while(t--){…...
哪款宠物空气净化器噪音低?希喂、美的、安德迈测评分享
今年双11,宠物空气净化器到底应该如何选?在所有的家电品类里,宠物空气净化器算是比较特殊的那个,产品迭代太快,我们把今年双11在售的各大主流品牌的宠物空气净化器统一汇总整理,发现基本一多半都是24年下半…...
2024年10月23日第一部分
1.马小民要不要承担责任 2.主动 我就是那种平常沉默寡言孤僻内向自卑又宅又无趣,感觉不管在哪里都是比较边缘不合群的人。6月份遇到一个女生,还是人家主动加的我,断断续续聊了一个月就没下文了,可能我没谈过恋爱吧,快…...
医院信息化与智能化系统(9)
医院信息化与智能化系统(9) 这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应的…...
逻辑回归与神经网络
从逻辑回归开始学习神经网络 神经网络直观上解释,就是由许多相互连接的圆圈组成的网络模型: 而逻辑回归可以看作是这个网络中的一个圆圈: 圆圈被称为神经元,整个网络被称为神经网络。 本节的任务是我们究竟如何理解具体的一个神…...
隨筆 20241024 Kafka 数据格式解析:批次头与数据体
Kafka作为分布式流处理平台,以其高吞吐量、可扩展性和强大的数据传输能力,成为了现代大数据和实时处理的核心组件之一。在Kafka中,数据的存储和传输遵循一种高效的结构化格式,主要由 批次头(Batch Header)和…...
【WiFi7】 支持wifi7的手机
数据来源 Smartphones with WiFi 7 - list of all latest phones 2024 Motorola Moto X50 Ultra 6.7" 1220x2712 Snapdragon 8s Gen 3 16GB RAM 1024 GB 4500 mAh a/b/g/n/ac/6e/7 Sony Xperia 1 VI 6.5" 1080x2340 Snapdragon 8 Gen 3 12GB RAM 512 G…...
LabVIEW偏振调制激光高精度测距系统
在航空航天、汽车制造、桥梁建筑等先进制造领域,许多大型零件的装配精度要求越来越高,传统的测距方法在面对大尺寸、高精度测量时,难以满足工业应用的要求。绝对测距技术在大尺度测量上往往会因受环境影响大、测距精度低而无法满足需求。基于…...
Python Pandas 数据分析的得力工具:简介
Python Pandas 数据分析的得力工具:简介 在如今的大数据与人工智能时代,数据的收集和处理能力变得至关重要。无论是在科学研究、商业分析还是人工智能领域,如何快速、高效地分析和处理数据都是不可忽视的课题。在众多的数据分析工具中&#…...
Llama 3.2-Vision 多模态大模型本地运行教程
Ollama 刚刚放出了对 Llama 3.2-Vision 的支持!这让人想起了新游戏发布带来的兴奋感——我期待着探索 Ollama 对 Llama 3.2-Vision 的支持。该模型不仅在自然语言理解方面表现出色,而且可以无缝处理图像,最好的部分是什么?它是免费…...
iOS 18.2 可让欧盟用户删除App Store、Safari、信息、相机和照片应用
升级到 iOS 18.2 之后,欧盟的 iPhone 用户可以完全删除一些核心应用程序,包括 App Store、Safari、信息、相机和 Photos 。苹果在 8 月份表示,计划对其在欧盟的数字市场法案合规性进行更多修改,其中一项更新包括欧盟用户删除系统应…...
照片怎么转换成pdf?盘点6种图片转pdf格式有效方法,直击要点!
照片怎么转换成pdf?在日常生活和工作中,我们难免会碰到需要将照片以pdf格式保存的情况,以便于更好的整理、分享或打印。虽然jpg格式的图片因其体积小而方便分享,但有时我们也希望将这些图片转换成pdf格式,以便于创建专…...
【Qt】Windows下Qt连接DM数据库
环境信息:W11 Qt5.12及以上 dm8 QODBC达梦 Windows环境创建ODBC数据源 使用 ODBC 方法访问 DM 数据库服务器之前,必须先配置 ODBC 数据源 在控制面板Windows工具中显示ODBC数据源管理器 ODBC数据源管理器标签 用户 DSN:添加、删除或配置本…...
做网站电信运营许可证/营销推广方案ppt案例
zabbix官方的一句话描述zabbix: 监视任何事情适用于任何IT基础架构,服务,应用程序和资源的解决方案 Monitor anythingSolutions for any kind of IT infrastructure, services, applications, resources ---------------------------------…...
静海网站建设制作/珠海网站建设
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/85623829 目录 一丶关于在项目中循环导入的问题 二丶日志功能实现 三丶项目数据库设计 四丶数据库迁移 一丶关于…...
滁州做网站优化/百度投放广告收费标准
在本文中,我们会研究一些用于数据科学任务的 Python 库,而不是常见的比如 panda、scikit-learn 和 matplotlib 等的库。尽管像 panda 和 scikit-learn 这样的库,是在机器学习任务中经常出现的,但是了解这个领域中的其它 Python 产…...
石河子市住房和城乡建设局网站/网页加速器
解决中文乱码的问题 header(Content-type: text/html; charsetUTF8);一、PHP是什么? 超级文本预处理语言(Hypertext Preprocessor) 网站是多个网页构成的一个集合。 动态网页是指使用网页脚本语言,比如php、asp.net等,…...
网页设计做音乐网站/seo网站搭建是什么
继续刷LeetCode 热题 HOT 100 的题目,并且在博客更新我的solutions。在csdn博客中我会尽量用文字解释清楚,相关Java代码大家可以前往我的个人博客jinhuaiyu.com中查看。 题目:全排列 给定一个不含重复数字的数组 nums ,返回其 所有…...
wordpress theme/优化关键词的方法正确的是
题目 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 思路 解决删除重复问题的一个有效的思路就是双指针法&#x…...