Webpack 、Vite

39 阅读1分钟

构建原理与核心差异

image.png

性能对比

image.png

为啥Vite使用Rollup打包,速度比Webpack快?

    1. 编译模式不同‌:Vite采用按需编译的方式,即直接启动开发服务器,然后按需编译文件,而Webpack需要先完整打包所有依赖和源代码,然后再启动开发服务器。这种方式使得Vite在开发环境下启动更快‌。
    1. 对浏览器的利用不同‌:Vite利用现代浏览器的 ES Modules** (ESM)特性,将开发环境下的模块文件直接作为浏览器执行文件,而Webpack则需要将代码打包成bundle。ESM模块允许在浏览器端直接导入导出模块,减少了编译和打包的步骤‌。
    1. 底层语言不同‌:Vite使用 esbuild** 进行预构建,esbuild是用 Go语言** 编写的,具有多线程并行处理的优势,而Webpack是基于 Node.js** 构建的,Node.js是单线程的。这种语言层面的差异使得esbuild的打包速度更快‌。
    1. 热更新处理不同‌:在Webpack中,模块更新需要重新编译整个项目,而Vite只需要让浏览器重新请求更新的模块,实现了更快的热更新‌。
    1. 缓存策略不同‌:Vite利用文件系统缓存和HTTP缓存机制,未改动的模块可以通过缓存复用,减少了重复编译的时间‌。

Vite利用ESM有哪些特性

  • 静态化分析:模块依赖关系在代码执行前确定(通过import/export的静态语法)

Vite的原理

Vite中热更新原理