vue

1为啥用Vue?

1MVVM 数据的双向绑定

2指令系统 不需要操作DOM

3组件化

2v-show和v-if、v-for

v-show 通过 display:none 隐藏元素,DOM还在。不可以触发组件的生命周期, 性能消耗 小

v-if 将 DOM元素整个添加或删除 ,可以触发组件的生命周期, 性能消耗 大

v-for和v-if不建议一起使用?

v-for优先级高一些所以,每次循环都会执行一次v-if判断,会大大影响效率。

如果一定要一起使用可以使用template标签包裹 里边写v-if

3vue生命周期

BeforeCreate 实例初始化后被调用,此时this没有,不能操作data和methods watch

Created函数 实例已经创建完成 ,可以访问data等但是不能操作dom

Beforemounte mounted

BeforeUpdate Updated

beforeDestroy Destroy

activated deactivated keep-alive 缓存的组件激活时/停用时

数据请求在created和mouted的区别? 都能拿到实例对象的属性和方法 放在mounted请求有可能导致页面闪动(页面dom结构已经生成),但如果在页面加载前完成则不会出现此情况建议:放在create生命周期当中

4computed与watch区别

computed计算属性,watch监视属性。俩个都能监听data里的数据变化,区别是

既能用 computed 实现又可以用 watch 监听来实现的功能,推荐用 computed 。因为有缓存。

特别的是watch可以做具体的业务逻辑异步使用。

5组件中data为什么是函数?

函数会 产生数据污染情况 。如果是对象,组件复用的话,一个地方的数据变化会影响到另一个。

因为对象属于引用类型,俩个组件的实例指向的是同一个内存地址的数据。

6Vue set的使用

vue 对已经存在的对象后添加的属性无法做响应式。需要用到Vue.set方法,

特别的Vue对数组的改变也无法监听,需要用到数组的方法,来实现。

7Vue响应式原理

data变页面变

通过object.defineProperty 方法的getter和setter,监听data里的数据,变化会调用setter方法,重新生成DOM

页面变data变

通过v-model(语法糖)原理:v-on绑定的input事件,将value值设置为事件触发变化的值

<input type="text" :value='msg' @input='msg = $event.target.value'

8组件通信

  1. 通过 props 传递
  2. 通过 $emit 触发自定义事件
  3. 使用 ref
  4. EventBus
  5. $parent 或$root
  6. attrs 与 listeners
  7. Provide 与 Inject
  8. Vuex

9nextTick理解

因为vue更新dom是一个异步操作,并不是数据变化会马上更新,会进入一个异步队列,等全部数据变化之后才渲染页面。因此要基于新的DOM操作时,需要用到这个函数。

10插槽

让父组件给子组件指定位置插入html结构,子组件利用solt决定位置。

特别的 作用域插槽是当数据在子组件(slot标签)身上需要传给父组件(template标签slot-scope)。

11mixin混合

多个组件可以复用的 如datacomponentsmethodscreatedcomputed等等 可以提取到混合函数里

局部混入:配置项mixins: [myMixin]全局混入 Vue.mixin()

特别的 当组件存在与mixin对象相同的选项的时候 ,会合并使用组件身上的优先,当有生命周期函数时会先执行混合函数,在执行组件身上的

12key原理

就是一个节点的唯一标识。在diff算法中可以根据key,更准确, 更快的找到对应的vnode节点

13keep-alive实现

在路由中设置keepAlive属性判断是否需要缓存 , 使用keep-alive标签包裹router-view

14Vuex

集中式状态管理

前端面试 -Vue2系列的更多相关文章

  1. 前端面试 -HTTP系列

    http和https 的区别? 端口 经济 安全性 响应速度 http 80端口 不需要 明文传输,安全性差 页面响应速度快,使用tcp的3次握手 https 443端口 费钱SSL需要ca 证书 S ...

  2. 2019前端面试系列——JS面试题

    判断 js 类型的方式 1. typeof 可以判断出'string','number','boolean','undefined','symbol' 但判断 typeof(null) 时值为 'ob ...

  3. 2019前端面试系列——Vue面试题

    Vue 双向绑定原理        mvvm 双向绑定,采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持各个属性的 setter.getter,在数 ...

  4. 2019前端面试系列——JS高频手写代码题

    实现 new 方法 /* * 1.创建一个空对象 * 2.链接到原型 * 3.绑定this值 * 4.返回新对象 */ // 第一种实现 function createNew() { let obj ...

  5. 2019前端面试系列——CSS面试题

    盒模型 /* 红色区域的大小是多少?200 - 20*2 - 20*2 = 120 */ .box { width: 200px; height: 200px; padding: 20px; marg ...

  6. 王下邀月熊_Chevalier的前端每周清单系列文章索引

    感谢 王下邀月熊_Chevalier 分享的前端每周清单,为方便大家阅读,特整理一份索引. 王下邀月熊大大也于 2018 年 3 月 31 日整理了自己的前端每周清单系列,并以年/月为单位进行分类,具 ...

  7. web前端面试试题总结---html篇

    HTML Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于 <html> 标签之前.告知浏览器的解析器 ...

  8. web前端面试总结

    本文由我收集总结了一些前端面试题,初学者阅后也要用心钻研其中的原理,重要知识需要系统学习.透彻学习,形成自己的知识链.万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的!也是不可能的! 前端还是一个 ...

  9. 【PC网站前端架构探讨系列】关于中小型PC网站前端架构方案的讨论与实践

    目   录 1.遇到的问题 2.目标 3.探讨 4.架构设想 5.流程 6.初步实现 7.存在问题 8.最后 遇到的问题 我在这个系列上篇文章 已经讲解并开始逐步应用模块化思想,不知大家还记不记得,题 ...

随机推荐

  1. 学习MySql(一)

    一.安装部署mysql 1.安装mysql: # yum -y install autoconf libaio libaio-devel # groupadd mysql # useradd -r - ...

  2. yum下载安装mysql服务

    1.下载mysql源码 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 2.安装mysql源 yum ...

  3. 数据仓库(5)数仓Kimball与Inmon架构的对比

    数据仓库主要有四种架构,Kimball的DW/BI架构.独立数据集市架构.辐射状企业信息工厂Inmon架构.混合Inmon与Kimball架构.不过不管是那种架构,基本上都会使用到维度建模. < ...

  4. 4.2 ROS节点运行管理launch文件

    4.2 ROS节点运行管理launch文件 关于 launch 文件的使用我们已经不陌生了,在第一章内容中,就曾经介绍到: 一个程序中可能需要启动多个节点,比如:ROS 内置的小乌龟案例,如果要控制乌 ...

  5. vue双向绑定、Proxy、defineproperty

    本文原链接:https://www.jianshu.com/p/2df6dcddb0d7 前言 双向绑定其实已经是一个老掉牙的问题了,只要涉及到MVVM框架就不得不谈的知识点,但它毕竟是Vue的三要素 ...

  6. [译]HTML&CSS Lesson5: 定位

    CSS最大的用处之一就是可以将内容和元素定位到任何我们想要的位置,使我们的设计具有结构,使内容更加易懂. CSS有好几种不同的定位属性,每种都有自己的使用场景.在这节课中我们会通过不同的案例--可复用 ...

  7. 什么是Viewport Meta(width详解)及在手机上的应用

    viewport是专为手机浏览器设计的一个meta标签: 有些屏幕很小有智能手机,但分辩率却可以做得很大,比如小米4的默认分辨率为:1920*1080,比许多电脑桌面的都还大,传统桌面网站直接放到手机 ...

  8. html5系列:form 2.0 新结构

    以往的一个form表单,结构比较死板,所有的form元素都必须处在<form>和</form>之间才有效,这会造成一些麻烦,比如说:像bootstrap这种使用<div& ...

  9. 基于React的仿QQ音乐(移动端)

    前言 由于这段时间工作上也是挺忙的,就没有时间去写这个项目,中间一直都是写写停停,进度也是非常慢的.正好前几天都还比较空,就赶紧抓着空闲时间去写这个项目,最后紧赶慢赶地完成了.本项目采用了React的 ...

  10. 2D骨骼动画工具DragonBones的使用教程

    怎样用更少的美术成本创造出更生动的动画效果?今天就为大家介绍一套开源的2D骨骼动画框架和工具--DragonBones,它包含了桌面骨骼动画制作工具DragonBonesPro和一套多语言版本的Dra ...