Vue 2 和 Vue 3 在数据绑定的操作语法上有一些区别,以下是两者的对比案例:
Vue 2 数据绑定
Vue 2 使用 data
选项来定义组件的数据,并通过 v-model
实现双向绑定。
示例代码:
<template>
<div>
<!-- 双向绑定 -->
<input v-model="message" placeholder="请输入内容" />
<p>输入的内容是:{{ message }}</p>
<!-- 单向绑定 -->
<p>静态内容:{{ staticMessage }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: '', // 双向绑定的数据
staticMessage: '这是 Vue 2 的静态数据', // 单向绑定的数据
};
},
};
</script>
特点:
- 数据定义在
data
函数中,返回一个对象。 - 使用
v-model
实现双向绑定。 - 使用
{{ }}
插值语法实现单向绑定。
Vue 3 数据绑定
Vue 3 引入了 setup
语法糖(<script setup>
),数据绑定更加简洁,同时支持 ref
和 reactive
来定义响应式数据。
示例代码:
<template>
<div>
<!-- 双向绑定 -->
<input v-model="message" placeholder="请输入内容" />
<p>输入的内容是:{{ message }}</p>
<!-- 单向绑定 -->
<p>静态内容:{{ staticMessage }}</p>
</div>
</template>
<script setup>
import { ref } from 'vue';
// 定义响应式数据
const message = ref(''); // 双向绑定的数据
const staticMessage = '这是 Vue 3 的静态数据'; // 单向绑定的数据
</script>
特点:
- 使用
ref
或reactive
定义响应式数据。 - 使用
v-model
实现双向绑定。 - 使用
{{ }}
插值语法实现单向绑定。 <script setup>
语法糖使代码更简洁。
对比总结
特性 | Vue 2 | Vue 3 |
---|---|---|
数据定义 | data 函数返回对象 | ref 或 reactive |
双向绑定 | v-model | v-model |
单向绑定 | {{ }} 插值语法 | {{ }} 插值语法 |
语法简洁性 | 需要 data 选项 | 使用 <script setup> 更简洁 |
响应式系统 | 基于 Object.defineProperty | 基于 Proxy |
Vue 3 的 <script setup>
语法糖和响应式 API(ref
、reactive
)使代码更简洁、更现代化。