初始化

在 new Vue() 时会调⽤用_init()进⾏行行初始化,会初始化各种实例例⽅方法、全局⽅方法、执⾏行行⼀一些⽣生命周期、

初始化props、 data等状态。其中最重要的是data的「响应化」处理理。

初始化之后调⽤用 $mount 挂载组件,主要执⾏行行编译和⾸首次更更新

编译

编译模块分为三个阶段

1. parse:使⽤用正则解析template中的vue的指令(v-xxx) 变量量等等 形成抽象语法树AST

2. optimize:标记⼀一些静态节点,⽤用作后⾯面的性能优化,在diff的时候直接略略过

3. generate:把第⼀一部⽣生成的AST 转化为渲染函数 render function

虚拟dom

Virtual DOM 是react⾸首创, Vue2开始⽀支持,就是⽤用 JavaScript 对象来描述dom结构,数据修改的时

候,我们先修改虚拟dom中的数据,然后数组做diff,最后再汇总所有的diff,⼒力力求做最少的dom操作,

毕竟js⾥里里对⽐比很快,⽽而真实的dom操作太慢

Vue的工作原理思路分析:

1、 首先使用Object. defineProperty()的原理来实现劫持监听所有属性

2、 每次在页面中使用一个属性就会产生一个watcher

3、 而watcher是通过dep来管理的,相同的属性的实例在一个dep中统一管理

4、 当其中一个属性变化的时候会通知dep变化,再通知dep中管理的对应的watcher进行变化

vue工作原理分析的更多相关文章

  1. SPI协议及工作原理分析

    说明.文章摘自:SPI协议及其工作原理分析 http://blog.csdn.net/skyflying2012/article/details/11710801 一.概述. SPI, Serial ...

  2. Security:蠕虫的行为特征描述和工作原理分析

    ________________________ 参考: 百度文库---蠕虫的行为特征描述和工作原理分析 http://wenku.baidu.com/link?url=ygP1SaVE4t4-5fi ...

  3. Azure WAF防火墙工作原理分析和配置向导

    Azure WAF工作原理分析和配置向导 本文博客地址为:http://www.cnblogs.com/taosha/p/6716434.html ,转载请保留出处,多谢! 本地数据中心往云端迁移的的 ...

  4. Hadoop生态圈-Zookeeper的工作原理分析

    Hadoop生态圈-Zookeeper的工作原理分析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   无论是是Kafka集群,还是producer和consumer都依赖于Zoo ...

  5. 原理剖析-Netty之服务端启动工作原理分析(下)

    一.大致介绍 1.由于篇幅过长难以发布,所以本章节接着上一节来的,上一章节为[原理剖析(第 010 篇)Netty之服务端启动工作原理分析(上)]: 2.那么本章节就继续分析Netty的服务端启动,分 ...

  6. AQS工作原理分析

      AQS工作原理分析 一.大致介绍1.前面章节讲解了一下CAS,简单讲就是cmpxchg+lock的原子操作:2.而在谈到并发操作里面,我们不得不谈到AQS,JDK的源码里面好多并发的类都是通过Sy ...

  7. getaddrinfo工作原理分析

    getaddrinfo工作原理分析 将域名解析成ip地址是所有涉及网络通讯功能程序的基本步骤之一,常用的两个接口是gethostbyname和getaddrinfo,而后者是Posix标准推荐在新应用 ...

  8. Mina工作原理分析

    Mina是Apache社区维护的一个开源的高性能IO框架,在业界内久经考验,广为使用.Mina与后来兴起的高性能IO新贵Netty一样,都是韩国人Trustin Lee的大作,二者的设计理念是极为相似 ...

  9. 结合 category 工作原理分析 OC2.0 中的 runtime

    绝大多数 iOS 开发者在学习 runtime 时都阅读过 runtime.h 文件中的这段代码: struct objc_class { Class isa  OBJC_ISA_AVAILABILI ...

随机推荐

  1. ConcurrentSkipListMap的常用方法

    package com.geo.map;  import java.util.Iterator;import java.util.Map.Entry;import java.util.Set;impo ...

  2. 吴丽丽-201871010123《面向对象程序设计(Java)》第七周学习总结

    吴丽丽-201871010123<面向对象程序设计(Java)>第七周学习总结 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个 ...

  3. MySQL数据库练习

    1.数据准备 以下为db文件,通过Navicat Premium导入数据库 /* 数据导入: Navicat Premium Data Transfer Source Server : localho ...

  4. JavaMap常用操作

    判断key值是否存在 map.containsKey("youkey") 根据key修改value值 map.put("youkey","you ne ...

  5. Netty4的介绍(一)

    Netty是由JBOSS提供给的一个java开源框架.Netty提供异步的.事件驱动的网络应用框架和工具,用以快速开发高性能.高可靠的网络服务器和客户端程序. 也就是说,Netty是一个基于NIO的客 ...

  6. 【作用域】词法作用域(静态作用域,如:js)、动态作用域(如:.bash脚本)

    作用域 作用域是指程序源代码中定义变量的区域. 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限. JavaScript 采用词法作用域(lexical scoping),也就是静态作 ...

  7. zz目标检测

    deep learning分类 目标检测-HyperNet-论文笔记 06-06 基础DL模型-Deformable Convolutional Networks-论文笔记 06-05 基础DL模型- ...

  8. oracle左连接与右连接

    left join(左联接)       ---返回左表中的所有记录和右表中条件字段相等的记录. right join(右联接)     ---返回右表中的所有记录和左表中联结字段相等的记录 inne ...

  9. 配置Hive 支持 JSON 存储

    1.说明 hive默认使用分隔符如空格,分号,"|",制表符\t来格式化数据记录,对于复杂数据类型如json,nginx日志等,就没有办法拆分了,这时候需要更加强大的SerDe来处 ...

  10. [NOI2014]动物园(KMP,字符串)

    半年前看这题还感觉很神仙,做不动(没看题解). 现在过来看发现……这tm就是一个sb题…… 首先题面已经提示我们用 KMP 了.那 KMP 究竟能干啥呢? 看 $num$ 的定义.发现对于前缀 $i$ ...