美文网首页
vue知识总结

vue知识总结

作者: paterL | 来源:发表于2022-09-24 19:21 被阅读0次

vue

attribute 是元素标签的属性,property 是元素对象的属性

vue实例

实例生命周期钩子

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

比如 created 钩子可以用来在一个实例被创建之后执行代码:

new Vue({
  data: {
    a: 1
  },
  created: function () {
    // `this` 指向 vm 实例
    console.log('a is: ' + this.a)
  }
})
// => "a is: 1"

也有一些其它的钩子,在实例生命周期的不同阶段被调用,如 mountedupdateddestroyed。生命周期钩子的 this 上下文指向调用它的 Vue 实例。

不要在选项Property或回调上使用箭头函数

如:

created: () => console.log(this.a)

实例生命周期

[图片上传失败...(image-562f97-1664104905942)]

模板语法

插值

数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值:

<span>Message: {{ msg }}</span>

==原始HTML==双大括号会将数据解释为普通文本,而非html代码,所以需要使用v-html指令

Attribute

Mustache 语法不能作用在 HTML attribute 上,遇到这种情况应该使用指令:

<div v-bind:id="dynamicId"></div>

指令

指令 (Directives) 是带有 v- 前缀的特殊 attribute, 指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

动态参数
<a v-bind:[attributeName]="url"> ... </a>

这里的 attributeName 会被作为一个 JavaScript 表达式进行动态求值,求得的值将会作为最终的参数来使用。例如,如果你的 Vue 实例有一个 data property attributeName,其值为 "href",那么这个绑定将等价于 v-bind:href

同样也可以使用动态参数为一个动态的事件名绑定处理函数

一些字符,如空格和引号,放在HTML attribute名里是无效的。例如:

<!-- 这会触发一个编译警告 -->
<a v-bind:['foo' + bar]="value"> ... </a>

在 DOM 中使用模板时 (直接在一个 HTML 文件里撰写模板),还需要避免使用大写字符来命名键名,因为浏览器会把 attribute 名全部强制转为小写:

<!--
在 DOM 中使用模板时这段代码会被转换为 `v-bind:[someattr]`。
除非在实例中有一个名为“someattr”的 property,否则代码不会工作。
-->
<a v-bind:[someAttr]="value"> ... </a>
修饰符

缩写

v-bind缩写

<!-- 完整语法 -->
<a v-bind:href="url">...</a>

<!-- 缩写 -->
<a :href="url">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a :[key]="url"> ... </a>

v-on缩写

<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

<!-- 缩写 -->
<a @click="doSomething">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a @[event]="doSomething"> ... </a>

目前只提供了v-bind和v-on两个指令的缩写

计算属性和侦听器

计算属性

对于任何复杂逻辑,都应当使用计算属性

可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。

计算属性默认只有getter,不过在需要时也可以提供一个setter

computed: {
  fullName: {
    // getter
    get: function () {
      return this.firstName + ' ' + this.lastName
    },
    // setter
    set: function (newValue) {
      var names = newValue.split(' ')
      this.firstName = names[0]
      this.lastName = names[names.length - 1]
    }
  }
}

现在再运行 vm.fullName = 'John Doe' 时,setter 会被调用,vm.firstNamevm.lastName 也会相应地被更新。

侦听器

Class与Style绑定

条件渲染

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

用key管理可复用元素

<template v-if="loginType === 'username'">
  <label>Username</label>
  <input placeholder="Enter your username">
</template>
<template v-else>
  <label>Email</label>
  <input placeholder="Enter your email address">
</template>

那么在上面的代码中切换 loginType 将不会清除用户已经输入的内容。因为两个模板使用了相同的元素,<input> 不会被替换掉——仅仅是替换了它的 placeholder

这样也不总是符合实际需求,所以 Vue 为你提供了一种方式来表达“这两个元素是完全独立的,不要复用它们”。只需添加一个具有唯一值的 key attribute 即可:

<template v-if="loginType === 'username'">
  <label>Username</label>
  <input placeholder="Enter your username" key="username-input">
</template>
<template v-else>
  <label>Email</label>
  <input placeholder="Enter your email address" key="email-input">
</template>

每次切换时,输入框都将被重新渲染。

<label> 元素仍然会被高效地复用,因为它们没有添加 key attribute。

v-show

v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

列表渲染

当它们处于同一节点,v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中。

组件基础

组件的组织

组件的注册类型有两种:==全局注册==和==局部注册==

全局注册的组件可以用在其被注册之后的任何 (通过 new Vue) 新创建的 Vue 根实例,也包括其组件树中的所有子组件的模板中。

相关文章

  • Vue学习总结(2019.7.31-8.4)

    Vue学习总结 目录 vue基础知识(1-13)vue 引入,实例化vue 数据 & 方法vue 绑定(:)vue...

  • 98道经典Vue面试题总结

    98道经典Vue面试题总结 本文档基于vue-cli技术栈总结了 vue-cli工程 vue.js核心知识 vue...

  • vue.js基础入门

    该文章只是我对vue基础知识的一点总结,详细vue知识请看Vue官方文档。 一、什么是vue.js 是一个轻量级M...

  • 经典Vue面试题总结 2019-06-14

    本文档基于vue-cli技术栈总结了 vue-cli工程 vue.js核心知识 vue-router路由 vuex...

  • 原生JS---经典面试题总结---doing

    总结的很全面:前端知识图谱 小昭聊前端--经典面试题总结 vue双向绑定原理分析 vue 3.0新特性 2019 ...

  • Vue 知识总结

    前言: 基于vue 2+ 写一份知识总结,可以说是学习笔记 目录: 一、vue实例的基本结构二、vue事件处理、绑...

  • vue知识总结

    vue attribute 是元素标签的属性,property 是元素对象的属性 vue实例 实例生命周期钩子 每...

  • 学习链接

    vue-router教程总结 vue生命周期和钩子函数 详解vue生命周期 Vue2.0八——知识点整理 vuex...

  • 2021前端面试

    174道JavaScript 面试知识点总结(下) [Vue中文社区](javascript:void(0);) ...

  • Vue知识总结(0)

    前言: 基于vue 2+ 写一份知识总结,可以说是学习笔记 目录: 一、vue实例的基本结构二、vue事件处理、绑...

网友评论

      本文标题:vue知识总结

      本文链接:https://www.haomeiwen.com/subject/ogbzortx.html