Vite基本概要
前端工程的痛点有模块化(ESM,CommonJS,UMD),资源编译(高级语法的编译),产物质量(代码体积和代码性能),开发效率(热更新),而前端构建工具的意义在于对应以上的各点,模块化——提供模块加载方案,兼容不同模块规范,语法转义———高级语法转译,如less,ts,资源加载——图片,字体和worker,产物质量——产物压缩,无用代码删除,语法降级开发效率——热更新。Vite定位为新一代前端构建工具,由no-bundle开发服务和生产环境基于rollup的bundler。核心特征在于dev启动速度和热更新速度很快。vite是基于原生esm的开发服务,浏览器会向vite Dev Server请求tsx文件,然后服务器编译完文件内容后再返回给浏览器,即无需打包项目源代码,能做到天然地按需加载,利用文件级的浏览器缓存。esbuild具备打包器bundler,编译器transformer和压缩器minifier三个功能,性能很高,vite简单的一行配置项有可能就等于webpack一大段配置。
Vite上手实战和架构解析&&进阶路线
生产环境的tree shaking会将没有依赖到的语句进行删除,vite在开发环境模拟了rollup插件机制,而在生产环境会直接使用rollup。vite分为服务启动阶段,请求响应阶段,热更新阶段和服务关闭阶段,每个阶段里有各自对应的hook,在不同的构建阶段能插入自定义逻辑,除此之外还有json加载插件,esbuild接入插件和官方react插件(第一次了解到这些东西,后面有时间要去深入了解一下~),代码分割功能,能让缓存的复用率提高,防止只是更改一个小组件就导致了全部文件的重新请求,耗费资源。babel能将高级语法降级为浏览器能够支持的语法,而语法安全降级借助Babel进行语法自动降级,提前注入polyfill实现如core-js,regenerator-runtime解决。