Vue.js-知识体系

Vue.js 学习知识树

├── 第一阶段:前置准备

│ ├── 1. 开发环境搭建

│ │ ├── Node.js 安装与配置

│ │ ├── npm/yarn/pnpm 包管理器

│ │ ├── VSCode + Volar 插件

│ │ └── Vue Devtools 浏览器扩展

│ │

│ ├── 2. HTML/CSS 基础

│ │ ├── 常用标签语义化

│ │ ├── CSS 选择器与盒模型

│ │ ├── Flex/Grid 布局

│ │ └── 响应式设计基础

│ │

│ └── 3. JavaScript 预备知识

│ ├── ES6 核心特性

│ │ ├── let/const 与块级作用域

│ │ ├── 箭头函数与 this 指向

│ │ ├── 模板字符串

│ │ ├── 解构赋值(数组/对象)

│ │ ├── 展开运算符(...)

│ │ ├── 模块化(import/export)

│ │ └── Promise 与异步编程

│ │

│ └── 4. TypeScript 基础(可选但推荐)

│ ├── 类型注解

│ ├── 接口与类型别名

│ └── 泛型入门

├── 第二阶段:Vue 基础核心

│ ├── 1. Vue 实例与生命周期

│ │ ├── 创建 Vue 应用实例(createApp)

│ │ ├── 挂载到 DOM(mount)

│ │ ├── 生命周期钩子

│ │ │ ├── beforeCreate / created

│ │ │ ├── beforeMount / mounted

│ │ │ ├── beforeUpdate / updated

│ │ │ ├── beforeUnmount / unmounted

│ │ │ └── activated / deactivated(keep-alive)

│ │ └── 生命周期图示理解

│ │

│ ├── 2. 模板语法

│ │ ├── 文本插值({{ }})

│ │ ├── 原始 HTML(v-html)

│ │ ├── 属性绑定(v-bind / :)

│ │ ├── JavaScript 表达式支持

│ │ └── 指令简介

│ │

│ ├── 3. 响应式基础

│ │ ├── 响应式数据原理概述

│ │ ├── reactive(对象响应式)

│ │ ├── ref(原始值响应式)

│ │ ├── computed(计算属性)

│ │ │ ├── 基本用法

│ │ │ ├── getter 与 setter

│ │ │ └── 与方法调用的区别

│ │ └── watch / watchEffect(侦听器)

│ │ ├── 侦听单个数据源

│ │ ├── 侦听多个数据源

│ │ ├── 深度侦听(deep)

│ │ └── 立即执行(immediate)

│ │

│ ├── 4. 条件渲染

│ │ ├── v-if / v-else-if / v-else

│ │ ├── v-show

│ │ ├── v-if vs v-show 区别与选择

│ │ └── template 上的条件渲染

│ │

│ ├── 5. 列表渲染

│ │ ├── v-for 遍历数组

│ │ ├── v-for 遍历对象

│ │ ├── key 属性的作用与重要性

│ │ ├── 数组更新检测

│ │ ├── 对象变更检测注意事项

│ │ └── v-for 与 v-if 的优先级

│ │

│ ├── 6. 事件处理

│ │ ├── v-on / @ 绑定事件

│ │ ├── 事件处理方法

│ │ ├── 内联事件处理器

│ │ ├── 事件修饰符

│ │ │ ├── .stop(阻止冒泡)

│ │ │ ├── .prevent(阻止默认)

│ │ │ ├── .capture(事件捕获)

│ │ │ ├── .self(自身触发)

│ │ │ ├── .once(只触发一次)

│ │ │ └── .passive(提升滚动性能)

│ │ └── 按键修饰符

│ │

│ └── 7. 表单输入绑定

│ ├── v-model 基本用法

│ ├── 不同表单元素的绑定

│ │ ├── 文本输入框

│ │ ├── 多行文本框

│ │ ├── 复选框

│ │ ├── 单选按钮

│ │ └── 选择框

│ ├── 修饰符

│ │ ├── .lazy(change 事件同步)

│ │ ├── .number(自动转数字)

│ │ └── .trim(自动去空格)

│ └── v-model 与组件通信

├── 第三阶段:组件化开发

│ ├── 1. 组件基础

│ │ ├── 组件的定义与注册

│ │ │ ├── 全局组件

│ │ │ └── 局部组件

│ │ ├── 单文件组件(.vue 文件结构)

│ │ │ ├── <template> 模板

│ │ │ ├── <script setup> 逻辑

│ │ │ └── <style scoped> 样式

│ │ └── 组件命名规范

│ │

│ ├── 2. 组件通信

│ │ ├── 父传子:props

│ │ │ ├── props 声明

│ │ │ ├── 类型校验与默认值

│ │ │ └── 单向数据流原则

│ │ ├── 子传父:emits

│ │ │ ├── $emit 触发事件

│ │ │ ├── 事件参数传递

│ │ │ └── 事件校验

│ │ ├── 兄弟组件通信

│ │ │ ├── 共同父组件中转

│ │ │ └── 事件总线(Vue2 方式,Vue3 不推荐)

│ │ ├── 跨层级通信

│ │ │ ├── provide / inject

│ │ │ └── 依赖注入的响应式处理

│ │ └── 访问组件实例

│ │ ├── 父访问子:ref

│ │ ├── 子访问父:$parent(不推荐)

│ │ └── 访问根实例:$root

│ │

│ ├── 3. 插槽(Slots)

│ │ ├── 默认插槽

│ │ ├── 具名插槽(v-slot / #)

│ │ ├── 作用域插槽

│ │ │ ├── 向插槽传递数据

│ │ │ └── 解构插槽 props

│ │ └── 动态插槽名

│ │

│ └── 4. 动态组件与异步组件

│ ├── <component :is> 动态组件

│ ├── keep-alive 缓存组件状态

│ ├── 异步组件 defineAsyncComponent

│ └── 代码分割与按需加载

├── 第四阶段:组合式 API(Composition API)

│ ├── 1. 为什么需要组合式 API

│ │ ├── 选项式 API 的局限性

│ │ ├── 逻辑复用与组织

│ │ └── 更好的 TypeScript 支持

│ │

│ ├── 2. 核心 API

│ │ ├── setup 函数

│ │ │ ├── 执行时机

│ │ │ ├── 参数:props, context

│ │ │ └── 返回值

│ │ ├── <script setup> 语法糖

│ │ │ ├── 顶层绑定自动暴露

│ │ │ ├── 使用 props(defineProps)

│ │ │ ├── 使用 emits(defineEmits)

│ │ │ └── 使用 slots 和 attrs(useSlots, useAttrs)

│ │ └── 响应式 API 进阶

│ │ ├── ref 与 reactive 深入

│ │ ├── toRef / toRefs(解构不丢失响应性)

│ │ ├── readonly(只读代理)

│ │ ├── shallowRef / shallowReactive(浅层响应式)

│ │ ├── triggerRef(强制触发)

│ │ └── customRef(自定义 ref)

│ │

│ └── 3. 组合式函数(Composables)

│ ├── 逻辑复用的最佳实践

│ ├── 自定义组合式函数命名规范

│ ├── 鼠标位置追踪示例

│ └── 异步数据请求封装

├── 第五阶段:Vue 生态路由(Vue Router)

│ ├── 1. 路由基础

│ │ ├── 安装与配置

│ │ ├── 创建 router 实例

│ │ └── 注册到 Vue 应用

│ │

│ ├── 2. 路由模式

│ │ ├── HTML5 History 模式

│ │ └── Hash 模式

│ │

│ ├── 3. 路由定义

│ │ ├── 静态路由配置

│ │ ├── 动态路由匹配(路径参数)

│ │ ├── 嵌套路由

│ │ └── 命名路由 / 命名视图

│ │

│ ├── 4. 路由导航

│ │ ├── 声明式导航(<router-link>)

│ │ ├── 编程式导航(router.push / replace / go)

│ │ └── 路由传参方式

│ │ ├── params

│ │ ├── query

│ │ └── props 解耦

│ │

│ ├── 5. 路由守卫

│ │ ├── 全局守卫

│ │ │ ├── beforeEach / afterEach

│ │ │ └── beforeResolve

│ │ ├── 路由独享守卫

│ │ ├── 组件内守卫

│ │ └── 完整的导航解析流程

│ │

│ └── 6. 路由高级应用

│ ├── 路由元信息(meta)

│ ├── 滚动行为控制

│ ├── 路由懒加载

│ └── 动态添加路由

├── 第六阶段:状态管理(Pinia)

│ ├── 1. 状态管理概念

│ │ ├── 为什么需要状态管理

│ │ ├── 单向数据流

│ │ └── Pinia vs Vuex 对比

│ │

│ ├── 2. Pinia 核心

│ │ ├── 安装与配置

│ │ ├── 定义 Store(defineStore)

│ │ ├── State(状态)

│ │ ├── Getters(类似计算属性)

│ │ ├── Actions(支持异步)

│ │ └── 在组件中使用 Store

│ │

│ └── 3. Pinia 进阶

│ ├── Store 之间相互调用

│ ├── 插件系统

│ ├── 状态持久化方案

│ └── 服务端渲染支持

├── 第七阶段:工程化与工具链

│ ├── 1. Vue CLI / Vite

│ │ ├── 创建项目(create-vue)

│ │ ├── Vite 核心特性

│ │ ├── 项目目录结构

│ │ ├── 环境变量与模式

│ │ └── 构建与部署

│ │

│ ├── 2. 调试与测试

│ │ ├── Vue Devtools 高级用法

│ │ ├── 单元测试(Vitest)

│ │ │ ├── 测试组件

│ │ │ ├── 测试 Pinia Store

│ │ │ └── 模拟依赖

│ │ └── 端到端测试(Cypress / Playwright)

│ │

│ └── 3. 代码规范

│ ├── ESLint 配置

│ ├── Prettier 格式化

│ ├── Husky + lint-staged

│ └── Git 提交规范

├── 第八阶段:Vue 3 新特性与原理

│ ├── 1. Vue 3 核心特性

│ │ ├── 组合式 API

│ │ ├── Fragment(多根节点)

│ │ ├── Teleport(传送门)

│ │ ├── Suspense(异步依赖处理)

│ │ └── 多个 v-model 绑定

│ │

│ ├── 2. 响应式原理

│ │ ├── Proxy 与 Reflect

│ │ ├── reactive 实现原理

│ │ ├── ref 实现原理

│ │ ├── 依赖收集与派发更新

│ │ └── Vue 2 vs Vue 3 响应式对比

│ │

│ └── 3. 虚拟 DOM 与渲染机制

│ ├── 虚拟 DOM 概念

│ ├── 渲染函数(h 函数)

│ ├── Diff 算法优化(PatchFlag)

│ └── 静态提升与缓存

├── 第九阶段:实用生态与周边

│ ├── 1. UI 组件库

│ │ ├── Element Plus

│ │ ├── Ant Design Vue

│ │ ├── Naive UI

│ │ └── Vuetify

│ │

│ ├── 2. 网络请求

│ │ ├── axios 封装

│ │ ├── 请求拦截与响应拦截

│ │ ├── 取消请求

│ │ └── 与 Pinia 配合

│ │

│ ├── 3. 实用工具库

│ │ ├── VueUse(组合式工具集)

│ │ ├── day.js(日期处理)

│ │ └── lodash-es(工具函数)

│ │

│ └── 4. 服务端渲染(SSR)

│ ├── Nuxt.js 基础

│ ├── 静态站点生成(SSG)

│ └── 混合渲染模式

└── 第十阶段:项目实战(综合应用)

├── 1. 项目规划

│ ├── 需求分析

│ ├── 技术选型

│ ├── 目录结构设计

│ └── 接口文档约定

├── 2. 基础架构搭建

│ ├── 项目初始化

│ ├── 路由配置

│ ├── 状态管理配置

│ ├── 网络请求封装

│ └── 样式方案(scss/tailwind)

├── 3. 核心功能实现

│ ├── 用户认证与权限

│ ├── 动态路由与菜单

│ ├── 表格与表单处理

│ ├── 文件上传与预览

│ └── 数据可视化(ECharts)

├── 4. 性能优化

│ ├── 路由懒加载

│ ├── 组件异步加载

│ ├── 虚拟列表

│ ├── 图片懒加载

│ └── 首屏加载优化

├── 5. 部署与 CI/CD

│ ├── 构建与打包

│ ├── 部署到 Nginx

│ ├── Docker 容器化

│ └── 自动化部署流水线

└── 6. 项目总结

├── 问题复盘

├── 性能分析报告

└── 可复用的组件沉淀

学习路线建议

按照这个知识树,建议的学习顺序如下:

  1. 第一阶段 → 第二阶段:打好基础,理解 Vue 核心概念

  2. 第三阶段:掌握组件化开发思想

  3. 第四阶段:学习组合式 API(Vue 3 精髓)

  4. 第五、六阶段:学习生态核心(路由和状态管理)

  5. 第七阶段:工程化配置

  6. 第八阶段:深入原理(可选,进阶)

  7. 第九阶段 → 第十阶段:实践出真知

每个节点都可以作为一个独立的学习单元,建议按照树状结构从上到下、从左到右逐步推进。每学习完一个分支,尝试写一个小 demo 来巩固。当完成整个知识树时,你将成为一名合格的 Vue 开发者。

相关推荐
掘金者阿豪21 分钟前
把业务数据变成共享仪表盘:Metabase可视化与远程访问实践
前端·后端
kyriewen42 分钟前
折腾了半年 AI 编程工作流,最后发现效率瓶颈是桌上那块屏幕
前端·javascript·ai编程
蜗牛前端1 小时前
codex 全流程开发上线的高颜值礼簿小程序
前端·微信小程序
大龄秃头程序员2 小时前
我在图文流 App 里落地双层缓存、弱网降级与 OOM 治理
前端
老王以为2 小时前
React Renderer 分离的多平台架构
前端·react native·react.js
hunterandroid2 小时前
Kotlin Coroutines 与 Flow:让异步任务更清晰
前端
Bigger2 小时前
从零搭建 AI 代码审查服务:一份前端也能看懂的 Python 学习笔记
前端·ci/cd·ai编程
lichenyang4533 小时前
JSAPI、NAPI、Biz、Imp:ASCF Demo 如何真正调用系统能力和 C++ 能力
前端
lichenyang4533 小时前
IPC、JSVM、UIThread、libuv:ASCF 架构图里最容易混的几个词
前端
用户059540174463 小时前
Redis记忆存储故障恢复测试踩坑实录:手动测试让我漏掉了2个一致性Bug
前端·css