# Vue2 数据绑定

本示例展示了 Vue2 中的两种数据绑定方式：
- 单向数据绑定 (`v-bind`)
- 双向数据绑定 (`v-model`)

## 核心概念详解

### 1. 数据绑定类型

| 类型     | 指令      | 特点              | 示例                          |
| -------- | --------- | ----------------- | ----------------------------- |
| 单向绑定 | `v-bind`  | 数据→视图单向流动 | `<input v-bind:value="name">` |
| 双向绑定 | `v-model` | 数据⇄视图双向同步 | `<input v-model="name">`      |

### 2. Vue 实例创建方式

```javascript
// 推荐写法 (ES6简写)
data() {
    return {
        name: "数据绑定"
    }
}

// 等价于
data: function() {
    return {
        name: "数据绑定"
    }
}

// 不推荐在组件中使用
data: {
    name: "数据绑定"
}
```

### 3. 动态挂载机制

```javascript
// 延迟挂载示例
setTimeout(() => {
    v.$mount("#app");  // 手动挂载到#app
}, 1000);

// 实例销毁与重建
setTimeout(() => {
    v.$destroy();  // 销毁旧实例
    
    const v2 = new Vue({  // 创建新实例
        data: { name: "新数据绑定" }
    });
    v2.$mount("#root");  // 挂载到新位置
}, 2000);
```

1. **数据绑定选择**：
   - 表单元素使用 `v-model` 实现双向绑定
   - 普通属性使用 `v-bind` 实现单向绑定

2. **实例管理**：
   - 避免在同一个元素上重复挂载不同实例
   - 切换挂载目标时务必先销毁旧实例

3. **数据定义**：
   - 组件中必须使用函数形式返回data对象
   - 根实例可以使用对象形式

4. **性能优化**：
   - 大量数据绑定时考虑使用计算属性
   - 复杂场景可使用自定义指令优化

## 扩展说明

### 1. `v-model` 原理
`v-model` 本质上是语法糖，等价于：
```html
<input 
  :value="name" 
  @input="name = $event.target.value">
```

### 2. 挂载方式对比
| 方式       | 示例                | 适用场景             |
| ---------- | ------------------- | -------------------- |
| el选项     | `el: "#app"`        | 初始化时确定挂载点   |
| $mount方法 | `vm.$mount("#app")` | 需要延迟或条件挂载时 |

### 3. 实例生命周期
- `new Vue()` 创建实例
- `$mount()` 触发挂载流程
- `$destroy()` 触发销毁流程

通过本文档，您可以全面了解 Vue2 的数据绑定机制和实例管理方法，为实际开发提供参考。
