Vue 模板语法
Vue.js主要使用了基于HTML
的模板语法,允许开发者声明式的将DOM绑定至底层的Vue实例数据,由于Vue.js基于HTML模板语法,所以所编写的自然而然能被浏览器所解析(除了远古浏览器)。
插值
插值主要包含了文本、原始HTML、属性、原始表达式
等四类,其中我们会在本章一一进行介绍:
文本
Mustache
在Vue.js中,常见的数据绑定形式就使用Mustache
语法来进行插值,即<p>{{message}}</p>
,这里的Mustache是一款经典的前端模板引擎,而Mustache的价值在其稳定以及经典,其中在Vui内的{{……}}
写法就类似与Mustache模板引擎的语法:
1 | <p>{{ message }}</p> |
v-once
Vue.js为我们提供了一个类似与Object.freeze()
阻止修改的方法,而vue又为我们提供了另一种方法即v-once
指令,通过v-once
指令我们可以进行一次性插值,当数据改变的时候,内容将不会被更新.
1 | <div id="app"> |
原始 HTML
通常在为我们提供指令的时候一般都会提供一个输出原始HTML
的指令。Vue并不例外,Vue所提供的指令是v-html
,即:
1 | <div v-html="html"></div> |
建议
v-html指令预期是字符串类型
,内容按照HTML
进行插入,不会被当作vue
模板进行编译。使用v-html
指令可能会出现一些安全问题,所以我们尽量在一些不容易发生问题的地方使用。
v-bind
v-bind:id
在默认的情况下Mustache语法并不能
使用在HTML 属性中(在vue编译的范围内),当遇到这种情况的时候我们可以使用v-bind
指令:
1 | <div v-bind:id="app">{{Hello}}</div> |
如果你还不能理解上面的Code以及v-bind
指令,我们可以通过下方code来进行理解:
1 | <div v-bind:id="app">{{Hello}}</div> |
在上述的code中,使用v-bind
指令的html属性将会在vue编译的范围内进行输出,而未使用b-bind
指令的html属性将不会进行输出。
v-bind:src
通过使用v-bind:src
指令,我们可以绑定一个src属性的比如img
元素:
1 | <div id="app"> |
当然v-bind
指令还可以支持缩写为:
,及上述img
元素重构为:
1 | <img :src="img" alt=""> |
v-pind:class
除了id~src
之外,还支持class
等方法:
1 | <style> |
1 | ```vue |
Vue 通过class red
添加到vue的渲染队列中,最后使用v-pind:class
来引入colorRed
。
v-pind:style
1 | <style> |
1 | ```vue |
v-pind:href
除了以上的几种v-pind
参数之外,自然还支持了href
参数
1 | <div id="app"> |
JavaScript 表达式
vue对javascript表达式有良好的支持,且并不限于表达式,甚至包括语句:
1 | <div id="app"> |
1 | <div id="app"> |
由于将属性加入到了DOM对象内,所以我们可以通过控制台来进行操作对象,就如本文中我们将此来实现显示以及隐藏等。
参数
当介绍完指令之后,自然而然的就是轮到了参数,就以上述的code为例子,v-if
为属性,而seen
为参数,如果要写我们可以这样:
1 | <div id="app"> |
修饰符
v-on
1 | ```vue |
那么其最后在 v-on
指令的笼罩下范围内的<a>
标签将会失去原本的作用:
ID | DA | FA |
---|---|---|
.stop | 调用 event.stopPropagation() | 停止传播 |
.prevent | 调用 event.preventDefault() | 防止默认 |
.capture | 添加事件侦听器时使用capture(捕获) 模式 | |
.self | 只当事件从侦听器绑定元素本身触发时才进行回调 | |
```.{keyCode | keyAlias} ``` | 只当事件从特定键触发时才进行回调 |
.native | 监听组件根本元素的原生事件 | |
.once | 只触发一次回调 | |
.left | 只当点击鼠标左键时触发 | |
.right | 只当鼠标点击右键时触发 | |
.middle | 当鼠标中键时触发 | |
.passive | 以 { passive: true } 模式添加侦听器 |
缩写
虽然已经在上述说明中标注了其指令的缩写,但为了视觉效果和让读者感觉非常重要,还是要单独列一个标题来着重标注。
Vue.js最为不同且便捷的方式就是,基本上每个指令都会有一个缩写,其中v-
前缀作为一种视觉提示,可用来辨别vue特定的属性,就如本文我们所出现的 v-bind
、v-on
缩写分别为:
以及@
。