vue通过{{ }}插值语法实现响应式文本渲染,支持简单表达式但不支持语句和过滤器;需绑定响应式数据,属性绑定须用v-bind,html转义防xss,v-once可实现一次性插值。

Vue 通过双大括号 {{ }}(Mustache 语法)实现最直接的响应式数据渲染,只要数据变化,视图自动更新。
插值语法的基本写法
在模板中任意文本位置写 {{ 变量名 }},Vue 会从当前实例的 data 或 setup() 中查找对应响应式属性,并把它的当前值插入到 DOM 中。
- 变量必须是已定义的响应式数据,比如
data() { return { msg: 'Hello' } },才能用{{ msg }} - 支持简单表达式:如
{{ count + 1 }}、{{ isActive ? '在线' : '离线' }},但不能写语句(如if、for) - 不支持过滤器(Vue 3 已移除内置过滤器),如需格式化,推荐用计算属性或方法
确保响应式的关键点
插值能自动更新,前提是绑定的数据本身是响应式的:
- Vue 2 中:定义在
data()函数返回的对象里,例如data() { return { title: '首页' } } - Vue 3(Options API):同样写在
data()中;Composition API 则需用ref()或reactive()声明,再在模板中直接使用{{ count }} - 修改数据必须通过响应式方式:比如
count.value++(ref)或state.count++(reactive),直接赋值非响应式变量无效
常见使用场景与注意事项
插值适用于纯文本内容渲染,不用于设置 HTML 属性或结构:
- ✅ 正确:
<h1>{{ title }}</h1>、<p>价格:{{ price.toFixed(2) }} 元</p> - ❌ 错误:
<div id="{{ id }}"> —— 属性绑定要用 <code>v-bind:id="id"(即:id="id") - ⚠️ 安全提示:
{{ }}默认做 HTML 转义,防止 XSS;若需渲染真实 HTML,请改用v-html,但要自行确保内容可信 -
<span v-once>{{ version }}</span>—— 即使version后续被修改,该处也不再变化 - 注意:
v-once作用于整个元素,它内部所有插值和指令也都变为一次性
一次性插值(按需使用)
如果某个值只在初始化时显示、后续不再响应更新,可加 v-once 指令提升性能:










