Vite 学习路线 MOC

从零基础到可独立配置 Vite 开发与生产构建的系统学习路线:六阶段、依赖关系、逐篇目录与完成标准。

#type / moc #type / synthesis #status / growing #tech / dev #tech / dev / frontend #resource / javascript

[!info] related notes

Vite 学习路线 MOC

这个概念为什么出现

把 Vite 当成“更快的 webpack 替代品口诀”会制造假进度:会 pnpm dev 却不懂原生 ESM 按需编译,会配 proxy 却分不清 modeNODE_ENV,会上插件却不懂 Rollup 钩子边界。本路线把「从零到可交付前端工程构建」拆成六个阶段。

[!abstract] 路线结论 先建立“开发用原生 ESM + 依赖预构建,生产用 Rollup 打包”的双路径模型,再掌握环境变量与 mode、路径别名与静态资源;随后进入 HMR 模块图与代理联调,再学生产构建优化与库模式,最后按需进入插件与 SSR。

整条路线围绕五个问题:

  1. 为什么冷启动可以快:按需编译而不是先打整包
  2. 依赖预构建(esbuild)解决什么兼容与性能问题
  3. mode.env*import.meta.env 如何协作
  4. 开发服务器能力(HMR、proxy)与生产构建为何不是同一条管线
  5. 插件系统如何同时服务 dev 与 build

如何使用这份路线

场景做法
从零开始按阶段顺序;每步用官方模板跑通再改配置
已有 webpack 经验重点补原生 ESM 开发模型,不要把 loader 思维硬套
框架使用者React/Vue 插件在阶段一后接入,细节回框架路线
只抓主干看文末主干主题

难度标记

  • L1 入门 · L2 基础 · L3 核心心智 · L4 工程优化 · L5 插件/SSR

依赖关系总图

flowchart TD
    S1["阶段一 定位与双路径"] --> S2["阶段二 项目与环境"]
    S2 --> S3["阶段三 开发服务器与 HMR"]
    S3 --> S4["阶段四 生产构建与优化"]
    S4 --> S5["阶段五 插件体系"]
    S4 --> S6["阶段六 SSR 与库模式"]
    S5 --> S6

阶段与子 MOC 对照

阶段目标主要子 MOC
Vite 是什么、dev/build 分工Vite 基础 MOC
脚手架、配置、别名、env/modeVite 基础 MOC
开发服务器、代理、HMR开发服务器与 HMR MOC
Rollup 构建、分包、资源构建与优化 MOC
插件钩子与常用插件插件与 SSR MOC
SSR、库模式、Monorepo 注意点插件与 SSR MOC

阶段一:定位与双路径模型

目标:能一句话说清 Vite 为什么快、生产为何仍打包。

完成标准

  • 能区分开发服务器与生产构建管线
  • 能解释依赖预构建的动机
  • 能创建并运行官方模板项目
序号笔记核心问题难度源码
1.1ViteVite 是什么、适合什么L1
1.2Vite 的设计动机为何出现、相对打包器开发模式L2建议
1.3开发与构建双路径esbuild/原生 ESM vs RollupL3建议
1.4Vite 概览(既有)能力清单速览L1
1.5Vite 基础知识(既有)生态对照L2

阶段二:项目结构、配置与环境

目标:能读懂并修改 vite.config,正确使用环境变量。

完成标准

  • 能配置 resolve.alias 并与 TS paths 同步
  • 能说明 mode.env.[mode] 加载顺序
  • 能区分 import.meta.env.PROD 与自定义 VITE_*
序号笔记核心问题难度源码
2.1安装 Vite 并运行第一个应用脚手架闭环L1
2.2配置与路径别名defineConfig 与 aliasL2
2.3Mode 模式(既有)mode 指令开关L2
2.4环境变量与 import.meta.env环境注入规则L3建议
2.5静态资源处理import 资源 vs publicL2

阶段三:开发服务器与 HMR

目标:会联调与理解热更新边界。

完成标准

  • 能配置 proxy 解决本地跨域联调
  • 能解释模块图失效(invalidate)直觉
  • 知道何时 HMR 会退化为整页刷新
序号笔记核心问题难度源码
3.1开发服务器与代理server 配置L2
3.2HMR 与模块图热更新如何精确失效L3建议
3.3依赖预构建optimizeDeps 动机L3建议

阶段四:生产构建与优化

目标:能产出可部署产物并做基础体积治理。

完成标准

  • 能解释生产构建为何走 Rollup
  • 能配置基础 build.rollupOptions 分包意识
  • 会用可视化工具观察 chunk
序号笔记核心问题难度源码
4.1生产构建build 主线L2
4.2代码分割与 chunk动态 import 与拆包L3
4.3构建分析与优化体积与缓存L3

阶段五:插件体系

目标:理解插件是 Vite 扩展点,会选不会造轮子优先。

序号笔记核心问题难度源码
5.1插件系统Rollup 插件超集L4建议
5.2常用插件与框架集成React/Vue 等L2

阶段六:SSR、库模式与协作

序号笔记核心问题难度源码
6.1SSR 概览middlewareMode 等L4建议
6.2库模式构建组件库产物L3
6.3Nx 与 env 冲突(既有)monorepo 实战坑L3

如果只抓主干,优先这 6 个主题

  1. 开发与构建双路径
  2. 依赖预构建
  3. 环境变量
  4. HMR 与模块图
  5. 生产构建
  6. 插件系统

0 到 1 的完成标准

  • 能从官方模板启动 React 或 Vue 项目
  • 能配置 alias、proxy 与多 mode 环境变量
  • 能解释 dev 快与 prod 打包的原因
  • 能完成一次生产构建并定位最大 chunk
  • 知道插件扩展点,不把业务逻辑塞进魔法配置

认知跳跃提醒

  1. 把 Vite 只当 CLI 封装 → 先 1.2 / 1.3
  2. 混淆 mode 与 NODE_ENV → 先 2.3 / 2.4
  3. 未理解预构建就乱改 optimizeDeps → 先 3.3
  4. 未分析产物就谈微前端拆包 → 先 4.1 / 4.2

相关入口

自测题

  1. 为什么开发不预打包全部源码,却要预构建依赖?
  2. import.meta.env.VITE_API 未定义时行为是什么?
答案
  1. 源码按需编译可保持启动快;依赖往往是 CJS/大量模块图,预构建可转换格式并合并请求。
  2. 值为 undefined(不会自动抛错),因此需要约定与类型声明。
创建于 2026/7/15 更新于 2026/7/15