1. computed(计算属性)和方法有什么区别?

计算属性本质上是包含 getter 和 setter 的方法

当获取计算属性时,实际上是在调用计算属性的 getter 方法。vue 会收集计算属性的依赖,并缓存计算属性的返回结果。只有当依赖变化后才会重新进行计算。

方法没有缓存,每次调用方法都会导致重新执行。

计算属性的 getter 和 setter 参数固定,getter 没有参数,setter 只有一个参数。而方法的参数不限。

由于有以上的这些区别,因此计算属性通常是根据已有数据得到其它数据,并在得到数据的过程中不建议使用异步、当前时间、随机数等副作用操作。

实际上,它们最重要的区别是含义上的区别。计算属性含义上也是一个属性(data 属性),可以读取也可以赋值;方法含义上是一个操作,用于处理一些事情。

2. v-if和v-show有什么区别?

v-if 能够控制是否生成 vnode(虚拟dom树),也就间接控制了是否生成对应dom。当 v-if 为 true 时,会生成对应 vnode,并生成对应的 dom 元素;当其为 false 时,不会生成对应 vnode,自然不会生成任何 dom 元素。v-if 是组件真正的渲染和销毁,而不是显示和隐藏

v-show 始终会生成 vnode,也就间接导致了始终生成 dom。它只是控制 dom 的 display 属性,当 v-show为 true 时,不做任何处理;当其为 false 时,生成的 dom 的 dispaly 属性为 none。v-show 是 CSS display 控制显示和隐藏

使用 v-if 可以有效的减少树的节点和渲染量,但也会导致树的不稳定;而使用 v-show 可以保持树的稳定,但不能减少树的节点和渲染量。

vue渲染节点越少效率越高,树越稳定效率越高。v-if节点少但树不稳定,v-show节点多但树稳定。

因此,在实际开发中,显示状态变化频繁的情况下应使用 v-show,以保持树的稳定;显示状态变化少时应该使用 v-if,以减少树的节点和渲染量。

3. 为何 v-for 要用 key

必须要用 key, 而且不能用 index 和 random,

key 是 vue 中 vnode 的唯一标记,通过这个 key,我们的 diff 操作可以更准确,更快速

在 diff 算法中用 tag 和 key 来判断,是否是 sameNode

可以减少渲染次数,提高渲染性能

VUE知识体系、VUE面试题的更多相关文章

  1. 总结vue知识体系之实用技巧

    vue 作为目前前端三大框架之一,对于前端开发者可以说是必备技能.那么怎么系统地学习和掌握 vue 呢?为此,我做了简单的知识体系体系总结,不足之处请各位大佬多多包涵和指正,如果喜欢的可以点个小赞!本 ...

  2. 2018 我要告诉你的 Vue 知识大全

    Vue ,React ,Angular 三大主流框架,最后我选择学习 Vue ,接触过 React ,自己感觉学习曲线有些陡峭,进而我选择了学习 Vue ,他的学习曲线平稳很多:不管选择什么框架,除了 ...

  3. vue知识总结

    vue: 渐进式JavaScript 框架 Vue项目构建 npm install -g vue vue init webpack-simple my-project cd my-project np ...

  4. Vue大概知识体系和学习参考

    Vue大概知识体系和学习参考文档 官方文档学习,参考,借鉴地址:https://cn.vuejs.org/v2/guide/installation.html 菜鸟教程:https://www.run ...

  5. Vue学习笔记-Vue.js-2.X 学习(一)===>基本知识学习

    一  使用环境: windows 7 64位操作系统 二  IDE:VSCode/PyCharm 三  Vue.js官网: https://cn.vuejs.org/ 四  下载安装引用 方式1:直接 ...

  6. Vue 知识整理—02-起步

    一:Vue 语法格式: vue vm = new Vue({ //选项 }) 二:Vue 实例: <div id="app"> <p>{{message}} ...

  7. VUE知识day3_vue-cli脚手架安装和webpack模板项目生成

    ue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目. GitHub地址是:https://github.com/vuejs/vue-cli 一.安 ...

  8. vue知识day1

    HTML语义.CSS:样式 js:行为 jQuery:简化了js操作 boostrap :框架 ,以类方式展现 react:facebook 公司的产品 angular:谷歌公司产品 vue:作者尤雨 ...

  9. 【从刷面试题到构建知识体系】Java底层-synchronized锁-1

    在技术论坛中,经常看到一种言论:面试造火箭,干活拧螺丝.我们平时写的大部分代码的确是CRDU,再提一个层次,也无非就是揉进去复杂一些的业务逻辑,把一堆的CRDU组合起来. 那么问题来了:我们提倡的研究 ...

  10. github上最全的资源教程-前端涉及的所有知识体系

    前面分享了前端入门资源汇总,今天分享下前端所有的知识体系. 个人站长对个人综合素质要求还是比较高的,要想打造多拉斯自媒体网站,不花点心血是很难成功的,学习前端是必不可少的一个环节, 当然你不一定要成为 ...

随机推荐

  1. C#无需第三方插件实现json和table互转

    using System; using System.Collections.Generic; using System.Collections; using System.Linq; using S ...

  2. 揭秘镭速传输点对点传输技术,NAT+Raysync强强组合

    点对点传输是一种文件即时传输方式用于实现数据的快速联动,为所有客户端提供资源,包括带宽.存储空间.计算能力.点对点传输技术有很多应用,包括共享各种格式音频.视频.数据等. 在5G重新定义带宽,信息技术 ...

  3. AXI4的PL与PS联合设计

    AXI4的PL与PS联合设计 1.实验原理 在前面的学习中,解决了如何利用一个缓冲寄存器控制另外一个寄存器的输入输出配置.接下来就是如何将PL设计直接导入到PS中实现资源互换.PS是可以通过AXI4总 ...

  4. KingbaseES 等待事件之LWLock lock_manager

    背景 相信我们不止一次遇到过一个等待事件:LWLock lock_manager.下面我们聊聊这个等待事件的含义,产生原因,以及解决方法. 等待事件含义 当数据库维护共享锁的内存区域以在无法实现以fa ...

  5. 跳转到制定Sheet页及提交指定sheet页内容

    一.跳转到指定Sheet的实现 话不多说,先上效果图 两个按钮的事件分别如下: _g().loadSheetByName("sheet1") # 跳转至sheet1按钮事件 _g( ...

  6. hadoop集群启动脚本文件myhadoop.sh

    #!/bin/bash if [ $# -lt 1 ] then echo "No Args Input..." exit ; fi case $1 in "start& ...

  7. 【mybatis踩坑】mybatis获取类型为字符串String的参数自动加引号

    今天写了一个简单的测试例子,用mybatis实现新建一个MySQL数据表 整体是JavaWeb项目,下面的代码是不完整的. 这是mapper 1 <?xml version="1.0& ...

  8. Refresh 重构(Refactor)

    最近在闲暇之余重(第)温(一..次)此书, 首先能感受到的, 无论你是新程序员还是老程序员, 这本书都已经不具备太多的可读性了. 由于本书成书年代久远, 那个时候软件行业还不够发达, 面向对象还没有被 ...

  9. #ST表,单调栈#洛谷 5648 Mivik的神力

    题目 分析 考虑答案应该是一段单调不下降的序列, 考虑预处理出每个点往后第一个大于这个点的位置, 那么答案应该是左端点到区间内最大的位置以及这个位置到右端点的贡献 那么区间最大的位置可以用ST表做,然 ...

  10. van-cell如何使用插槽

    van-cell 是 Vant 组件库中的一个单元格组件,用于展示列表中的信息.Vant 是一个轻量.可靠的移动端 Vue 组件库. 在 Vant 中,van-cell 组件提供了多个插槽(slot) ...