0%

前言

nextTick 是 Vue 的一个核心实现,在介绍 Vue 的 nextTick 之前,我们先结合上一节的例子来回顾下 nextTick 用法。

阅读全文 »

前言

前面析我们了解了响应式数据依赖收集过程,收集的目的就是为了当我们修改数据的时候,可以对相关的依赖派发更新,那么这一节我们来详细分析这个过程。

阅读全文 »

前言

前面说了 Object 数据的变化侦测方式,下面我们来看一下对 Array 型数据的变化 Vue 是如何进行侦测的。

为什么 Object 数据和 Array 型数据会有两种不同的变化侦测方式?

这是因为对于 Object 数据我们使用的是 JS 提供的对象原型上的方法 Object.defineProperty,而这个方法是对象原型上的,所以 Array 无法使用这个方法,所以我们需要对 Array 型数据设计一套另外的变化侦测机制。

万变不离其宗,虽然对 Array 型数据设计了新的变化侦测机制,但是其根本思路还是不变的。那就是:还是在获取数据时收集依赖,数据变化时通知依赖更新。

下面我们就通过源码来看看 Vue 对 Array 型数据到底是如何进行变化侦测的。

阅读全文 »

为什么要依赖收集

在上一章中,我们知道了数据什么时候发生了变化,那么当数据发生变化时,我们就需要去通知视图更新。那么问题又来了,视图那么大,我们到底该通知谁去变化?总不能一个数据变化了,把整个视图全部更新一遍吧,这样显然是不合理的。

视图里谁用到了这个数据就更新谁,我们换个优雅说法:我们把”谁用到了这个数据”称为”谁依赖了这个数据”,我们给每个数据都建一个依赖数组(因为一个数据可能被多处使用),谁依赖了这个数据(即谁用到了这个数据)我们就把谁放入这个依赖数组中,那么当这个数据发生变化的时候,我们就去它对应的依赖数组中,把每个依赖都通知一遍,告诉他们:”你们依赖的数据变啦,你们该更新啦!”。这个过程就是依赖收集。

阅读全文 »

关于 Vue.js

Vue.js 是一款 MVVM 框架,上手快速简单易用,通过响应式在修改数据的时候更新视图。当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 property,并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。Object.defineProperty 是 ES5 中一个无法 shim 的特性,这也就是 Vue 不支持 IE8 以及更低版本浏览器的原因。Vue 通过设定对象属性的 setter/getter 方法来监听数据的变化,通过 getter 进行依赖收集,而每个 setter 方法就是一个观察者,在数据变更的时候通知订阅者更新视图。

阅读全文 »

介绍

装饰器是一种特殊类型的声明,它能够被附加到类声明,方法,属性或参数上,可以修改类的行为。
通俗的讲装饰器就是一个方法,可以注入到类、方法、属性参数上来扩展类、属性、方法、参数的功能。
常见的装饰器有:类装饰器、属性装饰器、方法装饰器、参数装饰器。
装饰器的写法:普通装饰器(无法传参) 、 装饰器工厂(可传参)。
装饰器是过去几年中 js 最大的成就之一,已是 Es7 的标准特性之一。

阅读全文 »

模块的的概念(官方):

关于术语的一点说明: 请务必注意一点,TypeScript 1.5 里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。
“外部模块”现在则简称为“模块” 模块在其自身的作用域里执行,而不是在全局作用域里;

阅读全文 »

前面已经学习了 typescript 的相关概念、这里实现一个类型、接口、类 、泛型 综合使用的例子:
–TypeScript 封装统一操作 Mysql Mongodb Mssql 的底层类库

阅读全文 »