Vue 语法语句

上篇文章带着编写了基本的登录页面,让初学者对 Vue 项目开发有一定的了解,但没有细致讲解 Vue 的语法、路由等,因此接下来的文章将对这些知识点展开介绍。内容较多,建议快速阅览,留个印象,在实际开发中熟悉。

数据绑定

Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。

不太准确地说,当用户输入或其它途径修改了 “template” 中的数据元素时,“script” 内的 Vue 底层数据也会更新;当某些 JS 方法修改了数据时,也会将更新后的数据同步渲染 DOM。

插值

文本插值

数据绑定最常见的形式是使用 {{...}} 双大括号:

<template>
    <div>
        <p>{{ msg }}</p>
    </div>
</template>
<script>
export default {
    data() {
        return {
            msg: '北航软院yyds'
        }
    },
}
</script>

v-html

使用 v-html 指令渲染 html 内容:

<template>
    <div>
        <h1 v-html="msg"></h1>
    </div>
</template>
<script>
export default {
    data() {
        return {
            msg: '北航软院yyds'
        }
    },
}
</script>

属性

HTML 属性中的值使用 v-bind 指令进行绑定。以下实例判断 isShow 的值,为 true 时使用 class1 的样式,否则不使用:

<template>
    <div>
        <h1 v-bind:class="{'class1': isShow}">GOOD</h1>
    </div>
</template>
<script>
export default {
    data() {
        return {
            isShow: true
        }
    },
}
</script>
<style scoped>
.class1 {
    color: red;
}
</style>

用户输入

在 input 输入框中我们可以使用 v-model 指令来实现双向数据绑定:

<template>
    <div>
        <input v-model="msg">
    </div>
</template>
<script>
export default {
    data() {
        return {
            msg: '北航软院yyds'
        }
    },
}
</script>

v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。

过滤器

Vue.js 允许自定义过滤器,用于格式化文本数据并渲染。以下实例将字符串首字母转为大写:

<template>
    <div><h1>{{ msg | capitalize }}</h1></div>
</template>
<script>
export default {
    data() {
        return {
            msg: 'beihang is good!'
        }
    },
    filters: {
        capitalize(value) {
            if (!value) return '';
            value = value.toString();
            return value.charAt(0).toUpperCase() + value.slice(1);
        }
    }
}
</script>

事件绑定

Vue 主要使用 v-on 监听事件,调用相应函数对用户的交互做出响应。

点击按钮事件

按钮事件为 clickv-on:click="event" 表示当用户点击时调用 event 方法。以下实例在用户点击按钮后改变字符串:

<template>
    <div>
        <p>{{ msg }}</p>
        <button v-on:click="change">切换</button>
    </div>
</template>
<script>
export default {
    data() {
        return {
            msg: '北航软院yyds',
            msg1: '北航软院yyds',
            msg2: '啊对对对'
        }
    },
    methods: {
        change() {
            this.msg = (this.msg == this.msg1)? this.msg2: this.msg1;
        }
    }
}
</script>

在开发中可能会看到 v-on:click@click 两种用法,实际上这两种是一样的,后者是前者的缩写。

条件语句

条件判断使用 v-ifv-else-ifv-else 指令,以下实例通过判断 flag 的值展示不同的内容。

<template>
    <div>
        <p v-if="flag==='1'">{{ msg1 }}</p>
        <h1 v-else-if="flag==='2'">{{ msg2 }}</h1>
        <h2 v-else>{{ msg3 }}</h2>
        <input v-model="flag">
    </div>
</template>
<script>
export default {
    data() {
        return {
            msg1: '北航软院yyds',
            msg2: '啊对对对',
            msg3: 'ABC',
            flag: '1',
        }
    }
}
</script>

循环语句

遍历数组

使用 v-for 指令绑定数据到数组来渲染一个列表:

<template>
    <div>
        <p v-for="tea in teachers">{{ tea.name }}</p>
    </div>
</template>
<script>
export default {
    data() {
        return {
            teachers: [
                { name: 'ZewanHuang' },
                { name: 'Matrix53' }
            ]
        }
    }
}
</script>

遍历对象

<template>
    <div>
        <p v-for="value in obj">{{ value }}</p>
    </div>
</template>
<script>
export default {
    data() {
        return {
            obj: {
                name: 'Vuebook',
                url: 'https://super-buaa-2021.github.io/Vuebook/',
                slogan: '前端的水太深,你要好好把握!'
            }
        }
    }
}
</script>

[!TIP|style:flat] 本文介绍的语法语句在 Vue 项目开发中经常使用,建议自己动手熟练熟练。最快速上手的方法还是直接在开发中熟悉,记不清了就回来查一查。

Copyright © blog.zewan.cc 2022 all right reserved,powered by Gitbook该文章修订时间: 2022-03-25 03:21:11

results matching ""

    No results matching ""