vue较深入的知识点
虚拟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较深入的知识点的更多相关文章
- vue前端面试题知识点整理
vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...
- Vue.js中前端知识点总结笔记
1.框架和库的区别: 框架:framework 有着自己的语法特点.都有对应的各个模块库 library 专注于一点 框架的好处: 1.提到代码的质量,开发速度 2.提高代码的复用率 3.降低模块之间 ...
- vue中的一些知识点--多看文档
重温vue,一些知识点简单记录. 1.我们都知道当数据变化时,视图会重新渲染.注意:只有当vue实例被创建时,data中存在的属性才是响应式的.后续新添加的属性不会触发视图变化. 使用 Object. ...
- vue面试题,知识点汇总(有答案)
一. Vue核心小知识点 1.vue中 key 值的作用 key 的特殊属性主要用在 Vue的虚拟DOM算法,在新旧nodes对比时辨识VNodes.如果不使用key,Vue会使用一种最大限度减少动态 ...
- vue.js的一些知识点
1. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- MVC,MVVM,MVP的区别/ Vue中忽略的知识点!
按照顺序学习: https://scotch.io/courses/build-an-online-shop-with-vue/hello-world Vue Authentication And R ...
- vue经验 - 细节小知识点汇总(更新中...)
1. $refs 数据这么绑定的: 然后在created中抛出来,猜猜看看打印的是两个什么? 结果如下: 第一个跑出来了,第二个,却undefiend,没有东西?!... 后来去官网查看$refs的解 ...
- vue有关绑定的知识点
一.v-bind绑定class 1.对象的形式 <div :class="{text-danger:true}"></div> 数组形式绑定class &l ...
- vue组件的基本知识点
1. 组件中 is 的特性: 有些 HTML 元素,诸如 <ul>.<ol>.<table> 和 <select>,对于哪些元素可以出现在其内部是有严格 ...
随机推荐
- docker 不能访问外网
如果之前docker能访问外网,现在不能访问, 同时宿主机可以访问外网,那就重启docker.
- 逆向学习-Upack的PE文见头分析
重叠文件头 MZ文件头与PE文件头重叠. offest 0 e_magic:magic number = 4D5A('MZ') offest 3C e_lfanew:File address of ...
- 网络流24题 P1251 餐巾计划问题 拆点
题目描述 一个餐厅在相继的 NN 天里,每天需用的餐巾数不尽相同.假设第 ii 天需要 r_iri块餐巾( i=1,2,...,N).餐厅可以购买新的餐巾,每块餐巾的费用为 pp 分;或者把旧餐巾送 ...
- Python开发【第十六篇】:AJAX全套(转)
作者:武沛齐 出处:http://www.cnblogs.com/wupeiqi/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 概述 对于 ...
- [蓝桥杯]2013蓝桥省赛B组题目及详解
/*——————————————————————————————————————————————————————————— 题目:2013 高斯日记T-1 问题描述: 大数学家高斯有一个好习惯:无论如 ...
- Map的clear与new Map的区别
对于clear与new Map的区别.我们首先来看一个例子,本例子是我在实际开发中遇到的,需求就是讲map放入到list中,说白了就是list转map,有两种实现方式,分别是: // 方案一 Map& ...
- centos7之zabbix简单检查之端口监控
1.创建模板 模板名字可以随便起 2.重点在监控项和触发器上. 3.比如我们创建一个监控25端口号的监控项 net.tcp.service[tcp,,25] 这个选项不是手动写上去的,是需要点击选择. ...
- RabbitMQ消息队列
RabbitMQ消息队列 !!! 注意,保证服务器的内存足够,磁盘足够,以及删除/etc/hosts中没有用的dns解析 # 优点,能够保证消息数据持久化,不丢失,支持高并发 安装学习rabbitm ...
- Python——模块——fnmatch(文件名对比)
一.模块作用 fnmatch 模块主要用于文件名的比较,使用 Unix shell 使用的 glob 样式模式. 二.简单匹配 fnmatch() 将单个文件名与模式进行比较并返回布尔值,来看它们是否 ...
- Excel中最精确的计算年龄的公式
身份证算年龄 假设A1是身份证号所在单元格 =IF(MONTH(NOW())<INT(MID(A1,11,2)),INT(YEAR(NOW())-INT(MID(A1,7,4)))-1,IF(M ...