前端工程化vite插件原理

82 阅读1分钟

问题:为什么需要vite?解决了哪些问题,是如何解决的;

因为前端工程化的出现,项目分模块开发,模块化语义也不同,要想使最终的产物一致的话,需要一套 集编译、打包 转换的工具流,而vite 就是这样的工具流

当我们开始构建越来越大型的应用时,需要处理的 js 代码量也呈指数级增长。包含数千个模块的大型项目相当普遍。基于 JavaScript 开发的工具就会开始遇到性能瓶颈:通常需要很长时间(甚至是几分钟!)才能启动开发服务器,即热更新,文件修改后的效果也需要几秒钟才能在浏览器中反映出来。

1.优化服务器启动和打包速度
  1. 当冷启动开发服务器时,基于打包器的方式启动必须优先抓取并构建你的整个应用,然后才能提供服务。
  2. vite通过 esbuild 依赖预构建大大提升了构建速度
  3. 因为浏览器天然执行ES-MODULE,Vite 利用浏览器接管了打包程序的部分工作:Vite 只需要在浏览器请求源码时进行转换并按需提供源码。根据情景动态导入代码,即只在实际使用时才会被处理。
2.局部热更新

在 Vite 中,热更新是在原生 ESM 上执行的。当编辑一个文件时,Vite 只需要精确地使已编辑的模块与其最近的 HMR 边界之间的链失活(大多数时候只是模块本身),使得无论应用大小如何,热更新时钟是局部的,因此是十分高效的。