跳转到内容

Vue2+Vue3

💡

Vue是国产前端框架,国内使用率极高。Vue3已成为主流(2022年正式发布),Vue2仍大量存在于存量项目。本文覆盖两者的核心知识和差异,附带实战Demo。


一、Vue2 vs Vue3 核心差异

对比

Vue2

Vue3

响应式

Object.defineProperty(无法检测新增/删除属性)

Proxy(可拦截全部操作)

API风格

Options API (data/methods/computed)

Composition API (setup/ref/reactive) + Options API可选

生命周期

beforeCreate/created/mounted等

setup()替代beforeCreate+created,其余加on前缀

根节点

template必须单根节点

支持多根节点(Fragment)

组件注册

components: {} 局部注册

直接导入即用(无需显式注册)

响应式API

Vue.set()新增响应式属性

ref() / reactive() 即用即响应

打包体积

较大

Tree-shaking,更小

TypeScript

支持不完善

原生TS编写


二、Vue3 核心语法(Composition API)

2.1 响应式核心:ref 和 reactive

2.2 计算属性与侦听

2.3 生命周期

2.4 组件通信

2.5 插槽(Slot)


三、Vue2 核心语法(Options API)


四、常用指令

指令

作用

示例

v-bind / :

动态绑定属性

:src="imgUrl" :class="{ active: isActive }"

v-model

双向绑定(表单)

<input v-model="username"/>

v-if / v-else-if / v-else

条件渲染(移除DOM)

v-if="isLogin"

v-show

条件显示(display:none)

v-show="visible"(频繁切换用这个)

v-for

列表渲染

v-for="item in list" :key="item.id"

v-on / @

事件绑定

@click="handleClick" @submit.prevent

v-once

只渲染一次

v-once(不再响应式更新)


五、Vue Router(路由)


六、Pinia 状态管理(Vuex替代)


七、实战Demo:TodoList

💡

Demo练习要求:基于上面的TodoList,请完成以下增强功能:(1) 双击编辑待办项文本 (2) 添加"清空已完成"按钮 (3) 使用localStorage持久化数据,刷新不丢失。


学习重点:响应式(ref/reactive) → 计算属性(computed) → 组件通信(props/emit) → 路由(Vue Router) → 状态管理(Pinia) → 指令(v-model/v-if/v-for/@event)。先熟悉Vue3 Composition API,遇到Vue2代码会看即可。