Vite 的工作流程

打印 上一主题 下一主题

主题 1656|帖子 1656|积分 4968

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Vite 的工作流程基于其创新的 “预构建 + 按需加载” 机制,通过利用现代欣赏器对原生 ES 模块的支持,明显提拔了开辟服从和构建速率。以下是其核心工作流程的具体分析:

一、开辟环境工作流程

1. 启动开辟服务器



  • 冷启动:通过 npm run dev 下令启动本地开辟服务器,Vite 会快速初始化并启动一个基于 Koa 的服务器,无需打包全部模块,因此启动速率极快。
  • 预构建依靠:首次启动时,Vite 会对 node_modules 中的第三方依靠举行预构建(使用 esbuild),将 CommonJS 模块转换为 ESM 格式,并归并多个小文件以减少 HTTP 哀求。预构建结果缓存到 node_modules/.vite 目录,后续启动直接复用。
2. 按需编译与哀求拦截



  • 入口剖析:欣赏器哀求入口文件(如 index.html)时,Vite 剖析 HTML 中的 <script type="module">,识别入口模块(如 main.js)。
  • 动态编译:当欣赏器哀求某个模块(如 .vue 或 .ts 文件)时,Vite 拦截哀求并根据文件类型实时编译:

    • JavaScript/TypeScript:使用 esbuild 快速转换为欣赏器兼容的 ESM 代码。
    • Vue/Svelte 单文件组件:通过插件(如 @vitejs/plugin-vue)拆解模板、样式和逻辑,分别编译为 JavaScript 和 CSS。
    • 静态资源:CSS、图片等文件通过特定插件处理(如添加哈希名或转换为 Base64)。

3. 热模块更换(HMR)



  • 实时更新:修改文件后,Vite 仅重新编译变动的模块,并通过 WebSocket 通知欣赏器更新,无需刷新页面。例如,修改 Vue 组件时,仅更换该组件的代码,保留应用状态。
  • 优化计谋:HMR 边界主动推断,克制 Webpack 中全量更新的性能问题。

二、生产环境工作流程

1. Rollup 打包



  • 代码优化:通过 npm run build 触发 Rollup 打包,举行 Tree Shaking、代码压缩(Terser)和代码分割,生成优化的静态文件(输出至 dist 目录)。
  • 静态资源处理:CSS 提取为独立文件,图片等资源根据配置选择内联或外部引用。
2. 预构建缓存复用



  • 依靠复用:生产构建时复用开辟环境预构建的依靠缓存,减少重复编译时间。

三、核心机制剖析

1. 原生 ESM 支持



  • 欣赏器直接加载 ESM 模块,Vite 仅作为中央层处理模块哀求,实现真正的按需加载。
2. 插件系统



  • 扩展本领:通过插件(如 vite-plugin-pwa)支持 PWA、SSR 等场景。插件可拦截哀求、修改编译结果或扩展配置。
  • 常用插件示例
    1. // vite.config.js
    2. import vue from '@vitejs/plugin-vue';
    3. import legacy from '@vitejs/plugin-legacy';
    4. export default defineConfig({
    5.   plugins: [
    6.     vue(),
    7.     legacy({ targets: ['defaults'] }) // 兼容旧浏览器
    8.   ]
    9. });
    复制代码
3. 配置灵活性



  • 别名与路径剖析:支持自定义别名(如 @ 指向 src 目录)和扩展名主动补全。
  • 署理与服务器配置:开辟服务器支持 HTTPS、端口设置和 API 哀求署理。
    1. // vite.config.js
    2. export default defineConfig({
    3.   server: {
    4.     port: 3000,
    5.     proxy: {
    6.       '/api': { target: 'http://localhost:8000', changeOrigin: true }
    7.     }
    8.   }
    9. });
    复制代码

四、Vite 与 Webpack 的对比

特性ViteWebpack启动速率毫秒级(按需编译)慢(全量打包)HMR 服从仅更新变动模块需重新打包依靠链生产构建Rollup(轻量高效)自建打包(功能全面但较重)生态兼容性快速发展,支持主流框架成熟,插件丰富
五、适用场景与范围性



  • 适用场景:现代欣赏器项目、需要快速迭代的 SPA、基于 Vue/React 的应用。
  • 范围性

    • 对旧版欣赏器支持需额外插件(如 @vitejs/plugin-legacy)。
    • 生产环境仍需 Rollup 打包,复杂场景需手动优化。


通过上述流程,Vite 实现了开辟服从与生产性能的均衡,成为现代前端工具链中的紧张选择。如需深入配置或优化,可参考 Vite 官方文档。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表