vue基础知识笔记(1)

93 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

大家好,我是除了开发,什么都想试试的布布。用vue开发项目已经很长一段时间了,但是工作上却没写出什么高质量代码。过段时间要参加他人的项目,怎么着也不能在小问题上出差错。为了给自己打预防针,开始vue相关小知识点的总结之路,愿未来越来越好!

核心知识点

Vue模板语法

Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析

插值文本

数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值,但是HTML特性、属性值不能用Mustache 语法,应该使用v-bind指令。比如:v-bind:title="title"

列表渲染 条件渲染

v-for 指令基于一个数组来渲染一个列表。 v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名。

v-if指令用于条件性的渲染某一块内容。这块内容只会在指定的表达式返回truthy 值得时候渲染。

注意:v-show VS v-if

  • v-show 通过 css 属性 display 控制元素显示,元素总是存在
  • v-if 惰性渲染元素,若一开始条件为 falsy ,元素是不存在的

示例:

<div id="app">
    <!-- 条件渲染 -->
    <p v-if="flowers.length == 0">没有花花了~</p>
    <!-- 列表渲染 -->
    <p v-else>
        <ul>
            <li v-for="f in flowers">{{f}}</li>
        </ul>
    </P>

</div>
<script src="vue.js"></script>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            flowers: ['蔷薇', '玫瑰']
        }
    })
</script>

class与style绑定

表达式结果的类型除了字符串之外,还可以是对象或数组。

计算属性和监听器

模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护,此时就可以考虑计算属性和监听器。

计算属性 vs 监听器

  • 监听器更通用,理论上计算属性能实现的侦听器也能实现

  • 处理数据的场景不同,监听器适合一个数据影响多个数据,计算属性适合一个数据受多个数据影响

  • 计算属性有缓存性,计算所得的值如果没有变化不会重复执行

  • 监听器适合执行异步操作或较大开销操作的情况

示例

<p>

    <!-- 绑定表达式 -->

    <!-- 花朵种类:{{flowers.length + '类'}} -->

    <!-- 计算属性 -->

    <!-- 花朵数量总数:{{total}} -->

    <!-- 监听器 -->

    花朵数量总数:{{totalCount}}

</p>

<script>

    const app = new Vue({

        computed: {

            total() {

                return this.flowers.length + '类'

            }

         },

        // 下面这种不能生效,因为初始化时不会触发

        // watch: {

        //   flowers(newValue, oldValue) {

        //      this.totalCount = newValue.length + '类'

        //   }

        // },

        watch: {

            flowers: {

                immediate: true,

                // deep: true,

                handler(newValue, oldValue) {

                    this.totalCount = newValue.length + '类'

                }
            }
        },
    })

</script>

模板语法是如何实现的?

在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。

试试在自己写好的上面程序的 最后一行 打印一下 console.log(app.$options.render) 研究一下吧!