Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >vite 为什么比 webpack 快?

vite 为什么比 webpack 快?

作者头像
蓓蕾心晴
发布于 2022-09-30 00:24:01
发布于 2022-09-30 00:24:01
1.7K0
举报
文章被收录于专栏:前端小叙前端小叙

实际开发体验中,大家都可以明显感觉到 rollup 都比 webpack 启动快多了,实际是什么原因?

个人理解:

  1. vite 在开发阶段,采用了 esbuild 依赖预构建,所以大家会感觉到首次 run dev 的时候会稍微慢一些,如果 package.json 中依赖的包改变了,还会重新构建依赖
  2. esbuild 采用 go 开发,比 webpack 采用 js 开发快,go 是编译型语言,js 是解释性语言
  3. vite 启动之后,如果依赖不变,则不会重新构建依赖,依靠当下浏览器支持了 esmodule,通过 script 写为 type="module"  即可使用浏览器 esm 的方式加载模块,当模块有更新时,浏览器会将更新的模块通过 websocket 发起请求,本地 koa 服务 获取到改动的模块后,再进行更新,可以理解为按需动态加载模块

注意:

vite 在打包阶段是采用 rollup 的方式,目的是减少 http 请求,优化生产代码。

vite 优势:

项目大,依赖多的时候,开发效率更高。

推荐一篇写的很清楚的文章:https://blog.csdn.net/weixin_30230009/article/details/123625544

推荐阅读官方文档:https://vitejs.bootcss.com/guide/why.html

其中对依赖预构建是这样说的: 对于依赖的处理,我们通常称为依赖预构建,Vite 使用 esbuild 来实现依赖预构建,将 CommonJS 和 UMD 的依赖库转为 ESM 形式,此外因为依赖库大多数时候不会变化,Vite 会将构建好的依赖存到 node_modules/.vite 目录中,如果依赖变化(package.json 等文件中依赖变化了)则会重新构建。 vite 快的原因: 而 Vite 这类基于浏览器 ESM 形式的构建工具,利用浏览器实现了按需加载,相比打包类型的构建工具快上很多,而且随着项目的增大,热更新等也不会变慢,大大提高了开发效率。 vite 为什么使用 rollup 打包 虽然浏览器对 ESM 的支持已经很广泛了,但 Vite 还是选择在生产环境时使用 rollup 来打包,因为在生产环境下,使用未打包的 ESM 会产生比较多的 HTTP 请求,相对打包而言,效率还是比较低下的,所以 Vite 上生产依旧打包,并使用了 tree-shaking、懒加载等技巧让上生产环境的代码更加优雅。 vite 最终目的 简单而言,Vite 对开发环境与生产环境提供了不同的解决方案,其最终目的是提高开发效率。

贴一些个人学习的简单梳理

 转载请注明出处:https://cloud.tencent.com/developer/article/2130191

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
精读《新一代前端构建工具对比》
本周精读的文章是 Comparing the New Generation of Build Tools。
黄子毅
2022/03/15
4490
精读《新一代前端构建工具对比》
Vite和Webpack的核心差异
写在开头 最近的vite比较火,而且发布了2.0版本,vue的作者也是在极力推荐 在之前的文章里面我提到过,vite的缺点在于目前的生态不够webpack成熟,但是只要能弥补这个缺点,便有很大概率能替代目前webpack的大部分市场 全方位对比vite和webpack webpack打包过程 1.识别入口文件 2.通过逐层识别模块依赖。(Commonjs、amd或者es6的import,webpack都会对其进行分析。来获取代码的依赖) 3.webpack做的就是分析代码。转换代码,编译代码,输出代码 4.
公众号@魔术师卡颂
2021/03/15
4.3K0
Vite 是什么(并且为什么如此流行)?
自2020年4月发布以来,Vite的人气就像坐了火箭一样直线上升。截至写这篇文章的时候,这个项目在GitHub上已经获得了超过64k的star,并且在每周的npm下载量上超过了1200万,现在它支持着大多数开源框架,比如Nuxt[2]、SvelteKit[3]、Astro[4]、SolidStart[5]和Remix[6](这只是冰山一角)。
chuckQu
2024/06/06
1.1K0
Vite 是什么(并且为什么如此流行)?
Vite 的实现原理,确实很巧妙
本地是 main.tsx 引入了 App.tsx,并且还有 react 和 react-dom/client 的依赖:
神说要有光zxg
2024/04/10
4000
Vite 的实现原理,确实很巧妙
[ Vite ] 使用 vite 重构 webpack 项目过程中对两者之间差异对比的思考( 一 )
基于 vite 的优点速度快和热拔插功能,最近也在尝试将原来 webpack 构建的项目迁移改用 vite 构建代码,这里将他们迁移过程遇到的问题和总结记录下来。
GavinUI
2022/05/24
2.2K0
[ Vite ] 使用 vite 重构 webpack 项目过程中对两者之间差异对比的思考( 一 )
Webpack多页面项目转Vite升级初尝试
本文非深入了解,从中你能对Vite有个初步的认识,以此来对比与Webpack的差异,看完后你能了解到以下内容:
gary12138
2022/10/05
1.9K0
Webpack多页面项目转Vite升级初尝试
对vite的理解
"快速的冷启动"指的是在开发过程中,当你启动应用程序或重新启动开发服务器时,Vite 能够迅速加载应用程序。
不叫猫先生
2023/11/07
2890
对vite的理解
Vue3 中的脚手架工具Vite到底牛在哪, 一文全知道
Vue是一套用于构建用户界面的渐进式框架,与其它大型 JS 框架不同,Vue 被设计为可以自底向上逐层应用,更易上手,还便于与第三方库或既有项目整合,因此,Vue完全能够为复杂的单页应用提供驱动。
秋风的笔记
2021/07/09
1.9K0
Vite 学习(一) - 介绍
vite 是一个基于浏览器原生 ES-Module 的前端构建工具。官网描述为 下一代前端开发与构建工具。
测不准
2022/01/14
5480
探索Vite开发服务核心工具之:预优化(Pre-Bundling)
[15dz2gbnov.jpg] 背景 前段时间用Vite2.x造了个Vue3的个人项目,在Vite的加持下,无论是项目冷启动、热更新和构建,比起webpack速度都提升n00%(n≥10)以上,怀着强烈的好奇心,就把Vite的源码搞了下来学习下,顺便水篇文章方便以后重温😂😂😂。 认识构建工具的开发服务「Dev server」 开发服务是指开发者在本地开发前端项目时,构建工具会额外启动的一个本地服务。如执行npm run dev命令后,框架执行服务启动操作,启动完成后,你就能通过浏览器输入http://lo
南山种子外卖跑手
2022/02/22
1.5K0
探索Vite开发服务核心工具之:预优化(Pre-Bundling)
Vite 原理浅析及应用
Tips: 如果大家想直接看重点可以跳过前言,这里将介绍一下为什么我会有这次分享,也就是本次分享的背景以及目的。
离殊
2022/04/01
1.7K1
Vite 原理浅析及应用
Vite--前端工程化
当下,在项目开发的过程中,前端工程师们越来越离不开构建工具了,可以说构建工具已经成为了前端工程项目的标配。
江拥羡橙
2023/12/15
2420
Vite--前端工程化
尤雨溪-vite多久后能干掉webpack?
从定位来说两者就是不一样的:webpack core 是一个纯打包工具(对标 Rollup),而 Vite 其实是一个更上层的工具链方案,对标的是 (webpack + 针对 web 的常用配置 + webpack-dev-server)。 webpack core 因为只针对打包不预设场景,所以设计得极其灵活,不局限于针对 web 打包,几乎所有可配置的环节都做成了可配置的。这种极度的灵活性对于一些特定场景依然不可替代。但反过来导致的缺点就是配置项极度复杂,插件机制和内部逻辑晦涩难懂,针对常见的 web 也需要大量的配置。另外大量 loader 插件虽然单独发布却存在各种隐式耦合,很容易配置不当互相影响。对于新手来说,把 webpack 从零开始配到跟 Vite 开箱即用功能对等的程度根本是不可能的任务,所以大部分团队/公司要么用的是基于 webpack 包一层的脚手架(umi, vue-cli),或是专门养一个人称 webpack 配置工程师的角色。 Vite 的选择是缩窄预设场景来降低复杂度。如果预设了 web 的场景,那么大部分常见的 web 构建需求都可以直接做成默认内置。由于内置,可以适当的增加各个环节之间的耦合来进一步降低复杂度;同时浏览器场景下意味着可以利用原生 ESM,更进一步又可以基于原生 ESM 实现理论最优性能的热更新。 换言之 Vite 从一开始就不是冲着对标 webpack 100% 使用场景来的。这是一个目标场景 vs. 复杂度的取舍。有些场景,比如针对 Node 打包,本来就不属于 Vite 的目标场景(这个场景可以直接用 esbuild)。但是在纯 web 这个目标场景下,Vite 可以做到在对标 webpack 栈对等功能的前提下极大的降低配置复杂度和提升开发体验。 有些人的态度是这都是不痛不痒的东西 —— 怎么说呢,反正习惯了 Vite 的热更新速度之后你给我钱我也不想再用 webpack。有些人对 Vite 的怀疑其实不是 Vite 本身的问题 —— 核心还是在于已经稳定运行的 webpack 项目要换构建工具是个潜在成本很大的事情,没人愿意背锅而已。比起背锅,还不如多等几秒热更新(唉,也是可以理解的)。
用户10106350
2022/10/28
1.6K0
Vite 为何短短几年内变成这样?
自 2020 年 4 月发布以来,Vite 的人气蒸蒸日上。目前 Vite 在 GitHub 上的收藏数量已超过 64k,每周下载量超过 1200 万次,现在为 Nuxt、Remix、Astro 等大多数开源框架提供支持。
winty
2024/05/20
3570
Vite 为何短短几年内变成这样?
Vite 的好与坏
一开始我是拒绝的,从 grunt、gulp ,到 Webpack、Rollup、Snowpack 以及若干知名不知名构建框架,都2021了,还来?然后试用了一下,嗯,是真的香!
@超人
2021/07/29
6400
Vite 的好与坏
前端构建这十年
前端模块化/构建工具从最开始的基于浏览器运行时加载的 RequireJs/Sea.js 到将所有资源组装依赖打包 webpack/rollup/parcel的bundle类模块化构建工具,再到现在的bundleless基于浏览器原生 ES 模块的 snowpack/vite,前端的模块化/构建工具发展到现在已经快 10 年了。
IT大咖说
2021/09/08
1K0
前端构建这十年
Vite和Webpack的优缺点
Vite与Webpack是两种常用的前端构建工具,它们在原理和打包流程上有一些区别。
can4hou6joeng4
2023/11/28
1.4K0
什么,你还使用 webpack?别人都在用 vite 搭建项目了
vite 实际上就是一个面向现代浏览器,基于 ES module 实现了一个更轻快的项目构建打包工具。
呆呆
2021/12/01
8540
[调研报告] 新一代前端构建工具汇总
说起前端构建,大家一定首先想到 Webpack,确实它是前端构建的老大哥了,大而全,什么场景都能满足,社区生态爆炸。但是社区里也有许多其他优秀的构建工具,他们或许不如 Webpack 那样“包治百病”,但他们都有一些独特的优势,如果在一些特定的场景你觉得使用 Webpack 太臃肿了,那你或许可以考虑下面的一些工具。
Tecvan
2022/05/18
1K0
[调研报告] 新一代前端构建工具汇总
用 vite 2 平滑升级 vue 2 + webpack 项目实战
之前的 webpack 命令加前缀(如:"webpack:build"),继续可用
PHP开发工程师
2022/03/10
1.6K0
用 vite 2 平滑升级 vue 2 + webpack 项目实战
相关推荐
精读《新一代前端构建工具对比》
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文