首页 > 代码库 > vue 模板语法
vue 模板语法
模板语法
Vue.js使用了基于HTML的模板语法,允许开发者声明式将DOM绑定至底层Vue实例的数据。所有Vue.js的模板都是合法的HTML,所以可以被遵循规范的浏览器和HTML解析器解析。
在底层的实现上,Vue将模板编译成虚拟DOM渲染函数。结合响应系统,在应用系统改变时,Vue能够智能计算出重新渲染组件的最小代价并应用到DOM操作上。
插值
#文本
数据绑定最常见的形式就是使用“Mustache”语法(双大括号)的文本插值:
{{msg}}
通过使用v-once指令,你也能执行一次性的插值,当数据变化时,插值处的内容不会更新。但请留心这会影响到该节点上所有的数据绑定:
<span v-once>{{msg}}</span>
#纯HTML
双大括号会将数据解释为纯文本,而非 HTML 。为了输出真正的 HTML ,你需要使用 v-html
指令:
<div v-html="rawHtml"></div>
被插入的内容都会被当做 HTML —— 数据绑定会被忽略。
注意,你不能使用 v-html
来复合局部模板,因为 Vue 不是基于字符串的模板引擎。组件更适合担任 UI 重用与复合的基本单元。
你的站点上动态渲染的任意 HTML 可能会非常危险,因为它很容易导致 XSS 攻击。请只对可信内容使用 HTML 插值,绝不要对用户提供的内容插值。
属性
Mustache 不能在 HTML 属性中使用,应使用 v-bind 指令:
<div v-bind:id="dynamicId"></div> <button v-bind:disabled="someDynamicCondition">Button</button>
这对布尔值的属性也有效 —— 如果条件被求值为 false 的话该属性会被移除:
#使用javascript表达式
迄今为止,在我们的模板中,我们一直都只绑定简单的属性键值。但实际上,对于所有的数据绑定,Vue.js都提供了完全的javascript表达式支持。
{{number+1}} {{ok:‘YES‘?‘NO‘}} {{msg.split("").reverse().join(" ")}} <div v-bind:id=" ‘list-‘+id "></div>
这些表达式会在所属Vue实例的数据作用域下作为javascript被解析。有个限制就是。每个绑定都只能包含单个表达式,所以下面的例子都不会生效。
<!--这是语句,不是表达式--> {{var a=1}} <!--流控制也不会生效,请使用三元表达式--> {{ if(ok){ return messgae } }}
模板表达式都被放在沙盒中,只能访问全局变量的一个白名单,如 Math
和 Date
。你不应该在模板表达式中试图访问用户定义的全局变量。
vue 模板语法