vue数据绑定实现网页
Vue 数据绑定实现网页
Vue.js 通过数据绑定实现动态网页的核心机制是响应式系统和模板语法。以下是关键实现方式:
双向数据绑定(v-model)
使用 v-model 指令在表单元素和 Vue 实例数据间建立双向绑定:
<input v-model="message">
<p>{{ message }}</p>
data() {
return {
message: 'Hello Vue!'
}
}
修改输入框内容时,message 自动更新,并同步到 <p> 标签。
插值表达式({{ }})
在模板中直接绑定数据:
<div>{{ title }}</div>
数据变化时,视图自动重新渲染。
属性绑定(v-bind)
动态绑定 HTML 属性或组件 props:
<img v-bind:src="imageUrl">
<!-- 简写 -->
<img :src="imageUrl">
条件渲染(v-if / v-show)
根据数据控制元素显示:
<div v-if="isVisible">可见内容</div>
<div v-show="isActive">CSS 切换显示</div>
v-if:直接销毁/创建 DOM 节点v-show:通过display:none切换
列表渲染(v-for)
基于数组或对象渲染动态列表:
<li v-for="item in items" :key="item.id">
{{ item.text }}
</li>
需为每项指定唯一 key 以优化渲染性能。
计算属性(computed)
处理复杂逻辑并缓存结果:
computed: {
reversedMessage() {
return this.message.split('').reverse().join('')
}
}
模板中直接使用 {{ reversedMessage }},依赖的 message 变化时自动更新。
侦听器(watch)
响应数据变化执行异步操作:
watch: {
message(newVal, oldVal) {
console.log(`消息从 ${oldVal} 变为 ${newVal}`)
}
}
样式绑定
动态控制 CSS 类名和内联样式:
<div :class="{ active: isActive }"></div>
<div :style="{ color: textColor }"></div>
响应式原理
Vue 3 使用 Proxy 实现数据劫持,当数据变更时:
- 触发 setter 拦截
- 通知依赖该数据的 Watcher
- 触发组件重新渲染
完整示例
<template>
<div>
<input v-model="inputText">
<button @click="addItem">添加</button>
<ul>
<li v-for="(item, index) in list" :key="index">
{{ item }}
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
inputText: '',
list: []
}
},
methods: {
addItem() {
this.list.push(this.inputText)
this.inputText = ''
}
}
}
</script>
通过组合这些特性,可以构建高度交互的动态网页,数据与视图始终保持同步。







