首页 > 其他分享 >为什么vite比webpack速度快

为什么vite比webpack速度快

时间:2023-08-23 18:01:32浏览次数:40  
标签:浏览器 graph module server 源文件 webpack 速度 vite

一. webpack为什么慢

主要是由于其内部的核心机制——bundle模式引发的

  1. webpack通过 bundle机制,将项目中各种类型的源文件转化供浏览器识别的js、css、img等文件,建立源文件之间的依赖关系,将数量庞大的源文件合并为少量的几个输出文件。

  2. bundle工作机制的核心部分分为两块:构建模块依赖图 - module graph 和将 module graph 分解为最终供浏览器使用的几个输出文件。

  3. 构建 module graph 的过程中,涉及到大量的文件 IO、文件 transfrom、文件 parse 操作;以及分解 module graph 的过程中,需要遍历 module graph、文件 transform、文件
    IO 等。这些操作,往往需要消耗大量的时间,导致构建速度变得缓慢,所以项目规模越大,构建速度越是缓慢

  4. 开发模式下,dev server 需要 webpack 完成整个工作链路才可以启动成功,这就导致构建过程耗时越久,dev server 启动越久

  5. webpack 也做了大量的优化,如 loader 的缓存功能、webpack5 的持久化缓存,但是核心工作机制不变,远远达不到vite的速度

二.vite为什么快

主要两个方面:快速的冷启动和快速的热更新。vite借助了浏览器对ESM规范的支持,采取了与Webpack完全不同的unbundle机制

  1. unbundle 机制,顾名思义,不需要做 bundle操作,即不需要构建、分解 module graph,源文件之间的依赖关系完全通过浏览器对 ESM 规范的支持来解析。这就使得dev server在.
    启动过程中只需做一些初始化的工作,剩下的完全由浏览器支持。

  2. 浏览器发起请求以后, dev server 端会通过 middlewares 对请求做拦截,然后对源文件做 resolveloadtransformparse 操作,然后再将转换以后的内容发送给浏览器。

三.unbundle机制核心

  1. 模块之间的依赖关系的解析由浏览器实现

  2. 文件的转换由 dev servermiddlewares 实现并做缓存

  3. 不对源文件做合并捆绑操作

四.vite缺点

unbundle 机制给 Vitedev server方面获得巨大性能提升的同时,也带来一些负面影响,那就是首屏和懒加载性能的下降。

标签:浏览器,graph,module,server,源文件,webpack,速度,vite
From: https://www.cnblogs.com/sunnybob/p/17652414.html

相关文章

  • Vite + Vue3 + Element-Plus
    搭建Vite项目注意Vite需要 Node.js 版本14.18+,16+。然而,有些模板需要依赖更高的Node版本才能正常运行,当你的包管理器发出警告时,请注意升级你的Node版本。使用NPM: npmcreatevite@latest使用Yarn:yarncreatevite使用PNPM:pnpmcreatevite输入项......
  • vue3 用vite创建项目
    1.第一步运行创建命令(npm)npmcreatevite@latest注意的地方:首次创建的时候会出现这个 直接y就行了Needtoinstallthefollowingpackages:create-vite@latestOktoproceed?(y)直接y就行了2.第二步创建项目名称?Projectname:»vue3-demo3.第三步找到vue即可(下边有......
  • 安装vue3+vite报错
    报错:‘D:\Program‘不是内部或外部命令,也不是可运行的程序;我已经配置过环境变量,发现是node安装目录D:\ProgramFiles\nodejs,中间有空格导致,只能改变nodejs位置1.把nodejs整个剪切出来放在d盘根目录下面2.修改node的全局环境npmconfigsetcache"D:\nodejs\node_cache......
  • 解密七夕节快递速度之谜:物流行业的幕后功臣
    又是一年七夕,今年爱情总是伴随着太多的不确定性,突然的通知、滞留的快递、延期的演出...在这个特殊的日子里,大多数人都会选择通过网购礼物传递爱意和祝福。在此,快递物流就扮演着至关重要的角色。在七夕节前后,快递能够高效地将包裹送达消费者手中,背后离不开物流行业的卓越技术和创新......
  • Pandas字符串操作的各种方法速度测试
    由于LLM的发展,很多的数据集都是以DF的形式发布的,所以通过Pandas操作字符串的要求变得越来越高了,所以本文将对字符串操作方法进行基准测试,看看它们是如何影响pandas的性能的。因为一旦Pandas在处理数据时超过一定限制,它们的行为就会很奇怪。我们用Faker创建了一个100,000行的测......
  • 为 VitePress 网站添加 RSS 订阅支持
    省流:使用vitepress-plugin-rss这个插件前言在看许多个人博客站点的时候,右上角总会有个RSS订阅的标志恰好我的博客也是基于VitePress搭建的,就想看看能不能也实现这个功能呢?动手前先搜了一下,先是看到了vitepress-blog-zaun上有这个RSS的实现支持,再搜了一下发现Vue的官方博......
  • 跳槽前,最后撸一遍 Webpack 核心原理、babel、性能优化!
    又到一年金三银四,面试官今年最爱问点啥?说起前端工程师进阶,Webpack是一个绕不开的话题,每年都会很多新面试题源源不断的涌来,例如:Webpack的打包原理是什么?什么是loader,什么是plugin?什么是模热更新?有什么优点?Webpack之于前端,正如同gcc/g++之于C/C++。不论你用React、Vue还是Angu......
  • 什么情况下适合选择Socks5代理来提高爬取速度
    在爬虫领域,速度是至关重要的,因为更快的爬取速度意味着更高效的数据采集和处理能力。而选择正确的代理类型是提高爬取速度的关键之一。今天,我就跟大家一起讨论一下,到底什么情况下适合选择Socks5代理才能提高爬取速度。首先,让我们来了解一下Socks5代理的特点和工作原理。Socks5代理是......
  • 查询速度最高提升50倍!火山引擎ByteHouse在广告投放领域实践分享
     更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 据QuestMobile报告显示,移动互联网已经进入了下半场,在使用人数和使用时长方面已经没有明显增长,互联网已经流量趋于饱和。 作为广告投放主要阵地,由于互联网平台流量红利逐渐消退,越来越......
  • Vite新增打包时间显示
    1.新增buildTimePlugin(mode)插件exportdefault({mode})=>{process.env={...process.env,...loadEnv(mode,process.cwd())};letdist="dist-collect";constenv=process.env.VITE_NODE_ENV;if(env){if(env.startsWith("fo......