1 理解何为虚拟节点

虚拟dom是什么?
虚拟dom就是通过js对象来模拟描述dom树,包括tag,attr, children等属性来代表标签名,属性,子元素等。由于不需要有操作dom的方法,所以比真实的dom轻量很多。
vue虚拟dom是依赖于一个开源库snabbdom.js来扩展实现的。
,映射到真实的 DOM 实际上要经历 VNode 的 create、diff、patch 等过程。
为什么vue要使用虚拟dom?
1.直接频繁的操作真实的dom引起浏览器重排重绘,性能不好。虚拟dom可以通过diff算法快速的计算出变动的地方,有针对性的修改真实的dom。
2.实现数据映射到视图
3.虚拟dom是js对象描述的,可以跨平台应用,而真实的dom只能在浏览器被识别。

2 vue的数据驱动

Vue.js 一个核心思想是数据驱动。所谓数据驱动,是指视图是由数据驱动生成的,我们对视图的修改,不会直接操作 DOM,而是通过修改数据。它
相比我们传统的前端开发,如使用 jQuery 等前端库直接修改 DOM,大大简化了代码量。
特别是当交互复杂的时候,只关心数据的修改会让代码的逻辑变的非常清晰,因为 DOM 变成了数据的映射,我们所有的逻辑都是对数据的修改,而不用碰触 DOM,这样的代码非常利于维护。

3 vue的数据渲染到视图的过程

compile将template模板render为vnode,通过patch生成为真实的dom

4 说说vue的生命周期

每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如需要设置数据监听、编译模板、挂载实例到 DOM、在数据变化时更新 DOM 等。
同时在这个过程中也会运行一些叫做生命周期钩子的函数,给予用户机会在一些特定的场景下添加他们自己的代码。 beforeCread钩子是在vue初始化数据之前调用的,此时取不到props data等值
created 钩子是在vue初始化数据和监听函数之后调用的,此时能拿到props data等值。
beforeMount 是在render渲染vvnode之前调用的,此时未挂载到$el上。
mounted 是在渲染完vnode,得到真实dom并挂载到$el身上后调用的,此时能拿到真实的dom
beforeUpdate 是实例的数据发生变化,未渲染到页面之前调用的。
updated是数据发生变化并完成视图更新后调用的
beforeDestroy 组件销毁之前调用
destroyed 组件销毁之后调用的,此时已经注销掉所有监听事件和数据,但是页面的真实dom依旧保留着。

5 深入vue的响应式原理

响应式对象,核心就是利用 Object.defineProperty 给数据添加了 getter 和 setter。
目的就是为了在我们访问数据以及写数据的时候能自动执行一些逻辑:getter 做的事情是依赖收集,setter 做的事情是派发更新。

6 说说nextTick

vue的据的变化到 DOM 的重新渲染是一个异步过程,发生在下一个 tick。所以一旦我们想要获取到数据变化后的dom,需要在vm.$nextTick()之后去获取

7 computed 和watch 有什么区别

计算属性本质上是 computed 加 watcher,而侦听属性本质上是 user watcher。
就应用场景而言,计算属性适合用在模板渲染中,某个值是依赖了其它的响应式对象甚至是计算属性计算而来;而侦听属性适用于观测某个值的变化去完成一段复杂的业务逻辑。

vue较深入的知识点的更多相关文章

  1. vue前端面试题知识点整理

    vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...

  2. Vue.js中前端知识点总结笔记

    1.框架和库的区别: 框架:framework 有着自己的语法特点.都有对应的各个模块库 library 专注于一点 框架的好处: 1.提到代码的质量,开发速度 2.提高代码的复用率 3.降低模块之间 ...

  3. vue中的一些知识点--多看文档

    重温vue,一些知识点简单记录. 1.我们都知道当数据变化时,视图会重新渲染.注意:只有当vue实例被创建时,data中存在的属性才是响应式的.后续新添加的属性不会触发视图变化. 使用 Object. ...

  4. vue面试题,知识点汇总(有答案)

    一. Vue核心小知识点 1.vue中 key 值的作用 key 的特殊属性主要用在 Vue的虚拟DOM算法,在新旧nodes对比时辨识VNodes.如果不使用key,Vue会使用一种最大限度减少动态 ...

  5. vue.js的一些知识点

    1. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...

  6. MVC,MVVM,MVP的区别/ Vue中忽略的知识点!

    按照顺序学习: https://scotch.io/courses/build-an-online-shop-with-vue/hello-world Vue Authentication And R ...

  7. vue经验 - 细节小知识点汇总(更新中...)

    1. $refs 数据这么绑定的: 然后在created中抛出来,猜猜看看打印的是两个什么? 结果如下: 第一个跑出来了,第二个,却undefiend,没有东西?!... 后来去官网查看$refs的解 ...

  8. vue有关绑定的知识点

    一.v-bind绑定class 1.对象的形式 <div :class="{text-danger:true}"></div> 数组形式绑定class &l ...

  9. vue组件的基本知识点

    1. 组件中 is 的特性: 有些 HTML 元素,诸如 <ul>.<ol>.<table> 和 <select>,对于哪些元素可以出现在其内部是有严格 ...

随机推荐

  1. Windows API方式直接调用C#的DLL,支持多音字转拼音、Gzip解压缩、公式计算(VBA、C++、VB、Delphi甚至java都可以)

    原始链接 https://www.cnblogs.com/Charltsing/p/DllExport.html 这两年,我在VBA应用方面一直有几大痛点:1.多音字转拼音:2.64位下的GZIP解压 ...

  2. css之图片下方定位遮掩层

    需要的效果如图,图片下方加个遮掩层: html: <div class="listContent"> <div><img src="imag ...

  3. React生命周期详解

    React生命周期图解: 一.旧版图解: 二.新版图解: 从图中,我们可以清楚知道React的生命周期分为三个部分:  实例化.存在期和销毁时. 旧版生命周期如果要开启async rendering, ...

  4. webmagic保存数据

    使用多线程:

  5. Python3 视频教程,全网最全的视频教程,爬虫,从入门到实战

    需要联系我:QQ:1844912514 最新Python基础班+就业班视频教程 链接: python分布式爬虫打造搜索引擎链接: https://pan.baidu.com/s/1N7HL7U0gQX ...

  6. mongodb备份还原

    备份:mongodump mongodump常用参数 --db:指定导出的数据库 --collection:指定导出的集合 --excludeCollection:指定不导出的集合 --host :远 ...

  7. springcloud 设置feign超时时间

    转载网址:http://www.pianshen.com/article/187038775/

  8. nodejs搭建web服务器

    一.代码结构 //1.引入相关模块 var http=require("http") var url=require("url") var fs=require ...

  9. 【LUOGU???】WD与积木 NTT

    题目大意 把 \(n\) 个有标号物品分到一些有标号的箱子中且不允许为空,问期望箱子的数量. 多组询问. \(n\leq 100000\) 题解 记 \(f_i\) 为 \(i\) 个有标号物品分到一 ...

  10. 【洛谷P1402】酒店之王

    题目大意:有三个集合 \(P,Q,N\),P 与 N 集合之间存在一些有向边,N 与 Q 集合之间存在一些有向边.在三个集合中每个点最多只能利用一次的前提下,求最多能利用多少N 集合中的点,使得 \( ...