技术选型,关于Vite你要知道的避坑指南

117 阅读2分钟

一、前言

Vite很好,但选择需要谨慎。

Vite官网(源链接)针对性能问题提出了一些建议,要点提炼如下:

  1. 补全文件后缀;
  2. 避免使用桶文件;
  3. 尽可能使用原生化的工具链;

不知道大家看完是何感受,至少在使用Webpack或者其他非冷启动的工具时,是不需要考虑这些问题的。

个人见到的大多数vite项目,在开发时也是没有遵守这些规则,项目体积小的倒还好,大型项目则不可避免地会出现开发体验问题,例如:启动慢,路由切换响应慢。

二、 问题演化

  1. 项目初期并不会出现问题;
  2. 按照过往的开发习惯去开发,例如:省略文件后缀,文件夹用一个桶文件导出所有其他文件;
  3. 项目中后期出现卡顿,翻找文档,寻找原因。
  4. 由于一开始没做好规范化,改动大,风险大,谁都怕背锅,积重难返。

三、为什么Vite会有这个问题?

成也冷启动,败也冷启动。

冷启动作为vite的宣传招牌,实现了项目秒开,但这种秒开必然是少做了很多打包中要做的事情。例如:全量解析、代码分割、babel编译转化。

未做全量解析,导致项目运行时,还需要去猜引入的无后缀文件具体是什么后缀,按照.mjs', '.js', '.mts', '.ts', '.jsx', '.tsx', '.json'的顺序挨个去猜,无后缀的文件越多,性能开销越大。

未做代码的分割,导致文件引入都是全量引入,内部包含大量文件的桶文件则会严重影响性能。

未作babel编译转化,则需要在页面加载时编译。

四、总结

目前不太好看利用vite维护大型项目,要求所有开发者按照vite规范去开发,属于不可控行为,也显得框架的兜底能力很差。