Vue2

插值、指令、动态属性、表达式、v-html

  1. 插值:{{ data }}
  2. 指令 & 动态属性:例子(:id="xxx")
  3. 表达式:可以用于赋值,写在{{}}里面
  4. v-html 替换绑定v-html的元素的所有子元素

计算属性

  1. 计算属性有缓存,只在与其关联的数据更新时重新计算
  2. 计算属性可以设置get和set函数。如果计算属性用于双向绑定,必须使用set来定义赋值操作

watch监听器

  1. 监听数据变化,可以拿到 newValue 和 oldValue
  2. 如果监听的是引用类型,需要添加属性deep: true, 并且提供handler函数
  3. watch监听引用类型拿到的newValue和oldValue都是同一个~

动态绑定类名和样式

<!-- class -->
<div class="class_1" :class="{ "className": isActive }">
<div class="class_1" :class="['className1', 'className2']">
<!-- style -->
<div class="class_1" :style="styleObj">
  1. 类:

    1. 对象语法:是否添加该类,取决于该类名所对应的值,即isActive是否为true
    2. 数组语法:是否添加该类,取决于数组内是否有该类名
  2. 样式: 在styleObj中定义样式属性

v-if 和 v-show 的区别

  1. v-if : 创建dom,销毁dom
  2. v-show: 操作css即可

v-for 列表循环

不推荐v-for和v-if一起使用,因为v-for的优先级比v-if高。所以会先去v-for渲染,然后再每一个去判断。

事件

  1. vue事件对象的原型的构造函数是原生事件构造函数
  2. vue根据我们在哪个元素上写了@click,就往哪个元素上绑定事件处理函数
  3. 如果是多个参数,可以用$event传入

父子组件通信方式 之 props/$emit

  1. 父组件中使用动态绑定属性传值
  2. 子组件使用props属性接收
  3. 子组件向父组件传值:this.$emit('add',...[arguments)
  4. 父组件监听add事件@add="method"

兄弟组件通信方式

  1. eventBus: 是一个Vue实例
  2. eventBus.$emit('event', ...[arguments);
  3. eventBus.$on('event', method);
  4. 组件销毁的时候可以解绑事件监听,使用eventBus.$off('event', method);

父子组件生命周期执行顺序

  1. created, mounted, beforeDestroyed
  2. Vue实例创建时,父组件先创建,子组件先渲染
  3. 在更新时,子组件先更新完,父组件才能更新完。但是是父组件先触发更新

什么是 nextTick

  1. vue渲染是异步的,当我们更新数据时,vue不会马上去做渲染,而是在下一个tick的时候去做渲染
  2. 如果需要准确获取vue更新后的结果的话,可以使用vue提供的api,vue.$nextTick(fn); 在fn中去获取需要的结果

slot 插槽

  1. 什么是插槽?预留一个位置,可以让我们插入任何内容
<!-- app.vue -->
<ul-slot>
<li-slot>123</li-slot>
<li-slot>123</li-slot>
<li-slot>123</li-slot>
</ul-slot>
<!-- ulSlot -->
<ul id='ul-slot'>
<slot></slot>
</ul>
<!-- li-slot -->
<li id="li-slot">
<slot></slot>
</li>
  1. 子组件中slot标签的内容可以作为默认内容,如果没有内容传进插槽的话,就会显示默认内容

作用域插槽

<!-- parent -->
<son-slot>
<template v-slot:default="slotProps">
{{ slotProps.user.age }}
</template>
</son-slot> <!-- son -->
<!-- 注:user是子组件中的数据 -->
<slot :user=user>{{ user.name }}</slot>

具名插槽

<!-- App -->
<app>
<layout>
<template v-slot:header>
<h1>header</h1>
</template> <p>main content</p>
<p>main content</p> <template v-slot:footer>
<h1>footer</h1>
</template>
</layout>
</app> <!-- layout --> <div>
<header>
<slot name="header"></slot>
</header>
<main>
<slot></slot>
</main>
<footer>
<slot name="footer"></slot>
</footer>
</div>

个人理解:slot有点像是说a组件指定了b组件里面的一些内容,前提是b组件需要提供一些接口,这个接口就是slot标签

动态组件

<component type="xxx"></component>
<!-- 指定xxx可以动态决定当前是使用哪一个组件进行渲染 -->

异步组件

当前组件如果不需要使用的话,但是一并加载进来会很影响性能,所以这时候需要异步组件。

// 语法:
components: {
test: () => import('./components/test')
}

keep-alive

把想要保存的组件用keep-alive标签包裹起来

<keep-alive>
<A></A>
<B></B>
<C></C>
</keep-alive>
<!-- 这样组件ABC就不会销毁了,会缓存其dom内容 -->

mixin

// mixin.js
// 抽离公共部分的逻辑
export default {
data() {
return {
commonData: 123,
commonData2: 234
}
},
methods: {
commonMethod1() { },
commonMethod2() { }
}
} // vue
// 然后在vue中的mixin配置项配置一下
import mixin from './mixin'; export default {
mixins: [mixin]
}

Vue2复习的更多相关文章

  1. 【Vue学习笔记1】基于Vue2.2.6版本

    记录一下自己关于Vue学习的过程,便于以后归纳整理以及复习. 1.下载引用vue.js 下载: npm install vue ,然后引用. 或直接线上引用: <script src=" ...

  2. 【干货满满】1.5w字初中级前端面试复习总结

    前言 金九银十,又是一波跑路.趁着有空把前端基础和面试相关的知识点都系统的学习一遍,参考一些权威的书籍和优秀的文章,最后加上自己的一些理解,总结出来这篇文章.适合复习和准备面试的同学,其中的知识点包括 ...

  3. vue3响应式原理以及ref和reactive区别还有vue2/3生命周期的对比,第二天

    前言: 前天我们学了 ref 和 reactive ,提到了响应式数据和 Proxy ,那我们今天就来了解一下,vue3 的响应式 在了解之前,先复习一下之前 vue2 的响应式原理 vue2 的响应 ...

  4. iOS总结_UI层自我复习总结

    UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是 ...

  5. vue2.0实践的一些细节

    最近用vue2.0做了个活动.做完了回头发现,好像并没有太多的技术难点,而自己好像又做了比较久...只能说效率有待提升啊...简单总结了一些比较细节的点. 1.对于一些已知肯定会有数据的模块,先用一个 ...

  6. 用FSM一键制作逐帧动画雪碧图 Vue2 + webpack

    因为工作需要要将五六十张逐帧图拼成雪碧图,网上想找到一件制作工具半天没有找到,就自己用canvas写了一个. 写成之后就再没有什么机会使用了,因此希望有人使用的时候如果遇到bug了能及时反馈给我. 最 ...

  7. vue2.0构建淘票票webapp

    项目描述 之前一直用vue1.x写项目,最近为了过渡到vue2.0,特易用vue2.0栈仿写了淘票票页面,而且加入了express作为后台服务. 前端技术栈:vue2.0 + vue-router + ...

  8. vuex复习方案

    这次复习vuex,发现官方vuex2.0的文档写得太简略了,有些看不懂了.然后看了看1.0的文档,感觉很不错.那以后需要复习的话,还是先看1.0的文档吧.

  9. Vuex2.0+Vue2.0构建备忘录应用实践

    一.介绍Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化,适合于构建中大型单页应用. ...

  10. 一步步构造自己的vue2.0+webpack环境

    前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...

随机推荐

  1. Go Mysql Driver 集成 Seata-Golang 解决分布式事务问题

    简介: 2020 年 4 月,我们开始尝试实现 go 语言的分布式事务框架 Seata-Golang.众所周知,Seata AT 模式以无业务代码侵入的特点,被广大开发者推崇.Java 版 Seata ...

  2. MySQL深潜|剖析Performance Schema内存管理

    简介: 本文主要是通过对PFS引擎的内存管理源码的阅读,解读PFS内存分配及释放原理,深入剖析其中存在的一些问题,以及一些改进思路. 一  引言 MySQL Performance schema(PF ...

  3. Python:Lambda

    Lambda >>> (lambda: 3)() # Using a lambda expression as an operator in a call exp. 经过查阅资料,理 ...

  4. dotnet 使用增量源代码生成技术的 Telescope 库导出程序集类型

    本文将告诉大家在 dotnet 里面使用免费完全开源的基于增量源代码生成技术的 Telescope 库,进行收集导出项目程序集里面指定类型.可以实现性能极高的指定类型收集,方便多模块对接入自己的业务框 ...

  5. Mybatis学习一(介绍/举例/优化)

    MyBatis介绍: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...

  6. JUC并发编程学习笔记(二)Lock锁(重点)

    Lock锁(重点) 传统的synchronized 传统的解决多线程并发导致的一些问题我们会使用synchronized关键字来解决,synchronized的本质就是队列.锁. Lock的实现类有: ...

  7. Python 潮流周刊#49:谷歌裁员 Python 团队,微软开源 MS-DOS 4.0

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  8. .NET 缓存:内存缓存 IMemoryCache、分布式缓存 IDistributedCache(Redis)

    .NET缓存里分了几类,主要学习内存缓存.分布式缓存 一.内存缓存 IMemoryCache 1.Program注入缓存 builder.Services.AddMemoryCache(); 2.相关 ...

  9. createRange表示文档中的一个范围——用于js判断文字添加省略号情况

    document.createRange() 是 JavaScript 中的一个方法,用于创建一个 Range 对象,表示文档中的一个范围.Range 对象通常用于选择文档中的一部分内容,然后对其进行 ...

  10. 基于webapi的websocket聊天室(番外二)

    我比较好奇的是webapi服务器怎么处理http请求和websocket请求.有了上一篇番外的研究,这里就可以试着自己写个非常简易的webapi服务器来接收这两种请求. 效果 http请求 消息打印 ...