# 模板语法 Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层组件实例的数据。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析。 在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数。结合响应性系统,Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。 ## 插值 - 文本用{{ }},通过使用 `v-once` 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新。但请留心这会影响到该节点上的其它数据绑定。 - 纯HTML用`v-html`指令,可以防止XSS攻击。 - Attribute属性动态绑定,可使用`v-bind`指令,如果绑定的值是 `null` 或 `undefined`,那么该 attribute 将不会被包含在渲染的元素上。对于布尔 attribute (它们只要存在就意味着值为 `true`。 - JavaScript表达式,可以直接写表达式。 ```vue Message: {{ msg }} 这个将不会改变: {{ msg }}

Using v-html directive:

{{ number + 1 }} {{ ok ? 'YES' : 'NO' }} {{ message.split('').reverse().join('') }} ``` ## 指令 指令 (Directives) 是带有 `v-` 前缀的特殊 attribute。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。 ```vue

现在你看到我了

seen: true/false 显示/隐藏

现在你看到我了

seen: true/false 创建/删除 ``` **参数** 一些指令能够接收一个“参数”,在指令名称之后以冒号表示。例如,`v-bind` 指令可以用于响应式地更新 HTML attribute。 ```vue ... 在这里 href 是参数,告知 v-bind 指令将该元素的 href attribute 与表达式 url 的值绑定。 ... v-on 指令,它用于监听 DOM 事件. ``` **动态参数** 也可以在指令参数中使用 JavaScript 表达式,方法是用方括号括起来。 ```vue ... 这里的 attributeName 会被作为一个 JavaScript 表达式进行动态求值,求得的值将会作为最终的参数来使用。例如,如果你的组件实例有一个 data property attributeName,其值为 "href",那么这个绑定将等价于 v-bind:href。 可以使用动态参数为一个动态的事件名绑定处理函数 ... ... 当 eventName 的值为 "focus" 时,v-on:[eventName] 将等价于 v-on:focus. ``` **修饰符** 修饰符 (modifier) 是以半角句号 `.` 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。例如,`.prevent` 修饰符告诉 `v-on` 指令对于触发的事件调用 `event.preventDefault()`。 ```vue
...
``` ## 缩写 `v-bind:` 缩写`:` `v-on:` 缩写`@` ```vue ... ... ... ... ... ... ```