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 开发者。

相关推荐
Cache技术分享2 小时前
333. Java Stream API - 按年份找出合作最多的作者对:避免 Optional.orElseThrow() 的风险
前端·后端
用户600071819102 小时前
【翻译】元素与 Children 属性
前端·react.js
Mintopia2 小时前
又快又好的前端界面软件是怎么做出来的
前端
青青家的小灰灰2 小时前
深入解析 React 中的 useEffect:副作用管理的艺术与科学
前端·react.js
wuhen_n2 小时前
effect函数的完整实现与追踪:深入Vue3响应式核心
前端·javascript·vue.js
Never_Satisfied2 小时前
在JavaScript / HTML中,img标签loading lazy加载时机详解
开发语言·javascript·html
Coffeeee2 小时前
年过完了,该上班了,我用Compose给大家放个烟花喜庆喜庆
前端·kotlin·android jetpack
Marshall1512 小时前
UniApp 安卓端版本检查更新功能完整实现
前端
小飞大王6662 小时前
WebSocket技术与心跳检测
前端·javascript·websocket·网络协议·arcgis