Vite 进阶| 青训营笔记

65 阅读2分钟

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

Vite 进阶

双引擎机制

  1. ESbuild 官方文档

  2. Rollup 官方文档

Vite插件开发

插件机制可以使得部分功能代码抽离核心逻辑,易于扩展其他功能。

Vite的Hook

image.png

了解这些Hook后,我们卡伊在不同的构建阶段插入自定义的逻辑。

实例插件

开发Vite插件可以先去看官网文档,过一遍插件钩子的功能,然后多学习其他插件的实现,掌握套路。

1.Vite插件开发文档

复杂度较低的插件:json加载插件

复杂度中等的插件:Esbuild接入插件

复杂度较高的插件官方:React插件

  • 自定义一个插件

image.png

  • 使用插件 在配置文件引入这个插件 image.png

代码分割(拆包)

代码拆包前无法进行并发请求,缓存复用率低。 image.png 拆包后:

image.png

JS编译工具(Babel)

由于Javascript语法标准繁多,浏览器支持度不一。而开发者需要使用到高级语法,为了保证代码正常编译运行在各个标准之下,出现了Babel编译工具将代码编译成统一标准。

image.png

语法安全降级

可以查询某些语法在浏览器的支持情况:

以Promise 语法为例,IE11没有支持 image.png 浏览器兼容性自查工具

如何避免在构建产物中避免这类问题:

  • 上层解决方案:@vitejs/plugin-legacy
  • 底层原理:
    • 借助Babel进行语法自动降级
    • 提前注入Polyfil实现,如core-js、regenerator-runtime

参考资料:

服务端渲染(SSR)

一种常见的渲染模式,用于提升首屏性能和SEO优化。

构建阶段:

image.png 代码执行阶段:

image.png

参考资料:

深入了解底层标准

image.png 参考:

es-modules-a-cartoon-deep-dive

publish-esm-and-cjs

Vite社区生态

官方提供插件:

@vitejs/plugin-vue,提供 vue 3 支持

@vitejs/plugin-vue-jsx,提供 vue 3 Jsx 支持

@vitejs/plugin-react,提供 React 支持

@vitejs/plugin-legacy,提供低版本浏览器降级支持

海量社区插件:github.com/vitejs/awes…