前端构建工具提供模块加载方案,兼容不同模块方案,解决模块方案,通过高级语法转义,如sass、typescript,和资源加载,如图片、字体、worker,解决语法转义问题,通过产品压缩、无用代码删除,和语法降级,解决产品质量问题,通过热更新,解决开发效率问题。
vite是新一代前端构建工具,包括让源文件无需打包的no-bundle开发服务,和生产环境基于rollup的bundler,性能高,dev启动速度和热更新速度非常快,简单易用,开发者体验好。当前的前端打包工具启动缓慢,项目编译等待成本高,热更新缓慢,修改代码后不能实时更新,原因主要在于bundle带来的性能开销,和javascript语言的性能瓶颈。基于上述问题,目前业界出现两大趋势,一是全球浏览器对原生esm的普遍支持,二是基于原生语言编写的前端编译工具链,如go语言编写的esbuild,rust编写的swc。
以下为浏览器支持原生esm的示例代码。
<script type="module">
import {foo} from './foo,js'
console.log(foo)
</script>
基于这一特性,vite dev server无需打包项目源代码,实现天然的按需加载,可以利用文件级的浏览器缓存。
esbuild包括打包器、编译器和压缩器,性能极高。vite也深度使用了esbuild。
因此vite的功能等价于webpack等多种工具。
总的来说,vite是一个工具链,针对web的场景,内置了大部分常见的web构建功能,利用原生esm,实现更优性能的热更新。