vite | 青训营笔记

60 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天

  1. 为什么需要构建工具

    • 模块化 有多种模块语法
    • 资源编译 有很多高级特性和高级语法, 浏览器并不支持
    • 产物质量 代码压缩 tree-shaking 兼容性
    • 开发效率 热更新
  2. 意义

    • 兼容多种模块语法
    • 语法转译 将less ts转译为浏览器识别的代码
  3. vite

    • 新一代前端构建工具
    • 源文件无需打包 进行开发
    • 生成环境基于rollup的bundler
    • 高性能 dev和热更新很快
    • 简单易用 开发者体验好
  4. 传统构建工具的问题

    • 启动太慢 项目编译等待成本高
    • 热更新慢
  5. 瓶颈

    • bundle带来的性能开销
    • js的性能瓶颈
  6. esbuild是用go开发的打包工具 性能非常好

  7. swc是go开发的类似于Babel的代码转译工具

  8. 浏览器原生对esm的支持 vite基于esm的开发服务

    无需打包项目

    可以实现天然的按需加载

    由于不需要打包 可以充分利用浏览器缓存

  9. esbuild不支持类型检查 不支持降级到es5

  10. vite 采用双引擎 esbuild rollup rollup用于build

  11. 插件机制

    • 抽离核心逻辑
    • 易于扩展
  12. 插件开发 在各个阶段 通过hook注入插件逻辑

  13. 代码分割 拆包

  14. 只有一个产物不能并发请求 缓存利用率也低

  15. Babel

    • parse 将代码解析成抽象语法树
    • transform 将抽象语法树进行转译
    • generator 将转译后的ast重新变成源代码