Vue指令

写在前面

这一篇主要介绍的是使用非完整版的 vue.js 做项目时,其中的 *.vue 文件的语法标准,以及每一部分的含义。

1. <template></template>

template 模板标签里包含的内容是要渲染在页面的内容,是 XML 语法格式,不是 HTML 语法格式,XML 和 HTML 语法基本类似,但是 XML 比 HTML 更加严格些,如在闭合标签这一块,XML 严格要求单标签必须闭合,如 <input/>,但在 HTML 中,单标签可闭合可不闭合,且最新的语法和推荐的语法是不闭合。

还有就是在 XML 中,当标签内的内容为空时,可直接闭合,如 <div/> ,但是在 HTML 中则无这种语法。

由于 XML 更加严格,因此 Vue 为了能更好地写 *.vue 文件的编译器,于是规定 template 模板标签里的内容必须用 XML 语法。

2. <script></script>

该标签内的语法为:

<script>
    export default {
        options//里面的内容能写的和 new Vue(options) 里的一样,
        //只是不能有 template选项了,因为写在了外面<template>内
        //并且里面的 methods属性必须是函数
    }
</script>

3. <style></style>

存放 css 代码,或者 scss 代码,用于给上述的 <template> 里的元素添加样式

4. .vue 文件使用

import Xxx from './xxx.vue' //Xxx是一个 options 对象
new Vue({
    render: h=>h(Xxx)
}).$mount('#app')

5. HTML模板-template语法

在这里 HTML 模板指的是符合 HTML 语法的字符串,在 Vue 中称之为 template 模板

1.显示表达式

直接在 HTML 模板中插入相应的表达式,简单理解就是在 HTML 模板中插入变量、表达式等数据

文本插值

文本插值是在 HTML 标签的内容里面插入表达式,将变量用 {{}} 包起来就会被当作变量编译

{{ object.a }}

{{ n+1 }} //n 是构造选项 options 里的 data 的数据属性

{{ fn() }} //fn 是构造选项里的 methods 里的函数

{{ null / undefined }} //如果表达式的值计算出来是 null 或 undefined ,则不显示在页面

文本指令

文本指令是通过添加 vue 指令将表达式写进标签内部

<div v-text="表达式"> </div> 

取消模板编译

若想在 HTML 中插入的是 {{n}} 的普通字符串,则需要告诉 vue 该文本是普通字符串,不要编译,如下:

<div v-pre> {{n}} </div> //{{n}}普通字符串,v-pre表示不会对模板编译

2.显示富文本-HTML

<div v-html="x"> </div> //x的内容为 html 字符串,会被解析成对应的 html 元素

3.绑定属性

在 HTML 标签的属性里插入变量或表达式,可以用文本插值 {{}},但不推荐,因为文本插值一般是用于标签内部的内容的,因此用新的属性绑定指令 v-bind

<img v-bind:src="x"> </img> // x 是变量,会被编译

//缩写
<img :src="x"> </img> // 是上述的 v-bind: 的简写,直接在属性前加 :

4.绑定对象

<div :style="{border: '1px solid red', height: 100'}"> //这里可以把 100px 简写成 100
</div>

5.绑定事件

<button v-on:click="add"> +1 </button> //函数名,在点击时会调用该函数 add()

<button v-on:click="add(1,3)"> 加法 </button> //传参函数,在点击时执行该函数 add(1,3)

<button v-on:click="n+=1">将n+1</button> //表达式,在点击时执行表达式
//缩写
<button @click="add"> +1 </button>

6.条件判断

<div v-if="x > 0">
    x大于0时展示的部分
</div>
<div v-else-if="x === 0">
    x等于0时展示的部分
</div>
<div v-else>
    x大于0时展示的部分
</div>

7.循环

语法

v-for = "(value,key) in 对象或数组"

遍历数组

<ul>
    <li v-for="(u,index) in users" :key="index"> //一定要绑定个 key 属性,值为 key 不重复的值,此处的 :key="index"有bug
        索引:{{index}} 值:{{u.name}}
    </li>
</ul>

遍历对象

<ul>
    <li v-for="(value,name) in users" :key="name">
        属性名:{{name}} 属性值:{{u.value}}
    </li>
</ul>

8.显示与隐藏

<div v-show="表达式"> </div> 当表达式为真时显示该模块

<div v-show="n%2 === 0"> n是偶数 </div>

9.总结

Vue 用自己的指令来操作 DOM, 通过声明式编程将命令式编程简答化

原文地址:https://www.cnblogs.com/lovevin/p/13476835.html