Vue 2 基础用法与注意点

太微2025-04-18前端VueVue2入门

Vue 2 基础用法与注意点

Vue 2 是一套用于构建用户界面的渐进式框架,核心思想是 数据驱动视图:通过 选项式 API(Options API)datamethodscomputed 等组织在一个组件选项对象里。下面从「怎么写」到「要注意什么」做简要梳理。

1. 最小示例:挂载与数据

const vm = new Vue({
  el: "#app",
  data: {
    message: "Hello",
  },
});
<div id="app">{{ message }}</div>

或使用 运行时 + 编译器 版本,在构建工具里写 单文件组件(SFC) .vue

2. 常用选项(Options API)

选项作用
data返回组件的响应式状态(必须是函数返回对象,避免多实例共享引用)
methods事件处理、可被模板调用的方法
computed依赖数据变化的派生值,带缓存
watch监听某数据变化后执行异步或开销大的逻辑
props父传子数据
components注册局部子组件

生命周期(节选)beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroyed(Vue 2.7 中 destroy 相关命名与 Vue 3 的 unmounted 不同,迁移时需对照)。

3. 模板语法要点

  • 插值{{ }},内部为表达式,不是任意语句。
  • v-bind / :attr:绑定属性;v-on / @event:绑定事件。
  • v-if vs v-showv-if 条件为假时不渲染 DOM;v-show 始终渲染,用 CSS 切换显示。
  • v-for:列表渲染务必加 :key,且 key 应稳定、唯一(避免用数组下标作为唯一 key,除非列表静态且顺序不变)。

4. 父子通信(简要)

  • 父 → 子:props(单向向下,不要在子组件里直接改 prop,应通过 $emit 或本地 data 拷贝)。
  • 子 → 父:$emit('事件名', payload)
  • 跨层级/兄弟:VuexEventBus(不推荐大规模滥用)、或 provide / inject(Vue 2.2+)。

5. Vue 2 响应式上的注意点(重点)

Vue 2 用 Object.definePropertydata 里已有属性做成响应式,因此:

对象

  • 不能靠直接赋值检测新增属性:应使用 Vue.set(obj, key, value)this.$set
  • 删除属性Vue.deletethis.$delete,否则视图可能不更新。

数组

  • 通过 下标 直接赋值:arr[i] = x 可能不触发更新;应使用 Vue.setsplice 等 API 或替换整个数组。
  • 修改 length 也可能无法被正确追踪。
  • 变异方法pushpopsplice 等)已被包装,可触发更新。

异步更新

数据变化 → DOM 更新 在同一事件循环里批量、异步完成,若在 data 赋值后立刻读 DOM,可能仍是旧值,需用 $nextTick(callback)

6. 优点

优点说明
上手曲线选项式 API 与模板直观,官方文档与教程丰富
生态成熟Vue 2 时代大量 UI 库、业务插件、问答沉淀
渐进式可只用在页面局部,也可配合 Vue Router / Vuex 做完整 SPA
单文件组件模板、样式、逻辑分离清晰,工程化工具链成熟

7. 缺点与局限

缺点说明
响应式实现基于 defineProperty,对对象增删属性、数组部分写法需额外 API,心智负担
性能与包体积相对 Vue 3,运行时优化与 tree-shaking 空间较小
TypeScript类型推导与组合式 API 时代相比偏弱(需额外技巧与类型辅助)
长期维护Vue 2 已结束官方支持,新项目应优先 Vue 3;老项目需规划迁移或评估风险

8. 小结

Last Updated 4/9/2026, 6:16:02 AM