vue 初入

生命周期

Vue实例在初始化时需要经历一系列过程,比如编译模板、渲染虚拟DOM树、将实例挂载到DOM上、设置数据监听和数据绑定等。在这些过程中也会运行一些钩子函数,允许开发者在不同的阶段注入自己的代码。下面,笔者将上一小节中的简单实例稍微改造一下,为其绑定钩子函数并打印标识信息,用以观察这些钩子函数执行的时机。

 

 

 

 

 

数据响应式原理

初识数据链

数据链在学术上被

 

定义为连通数据的链路。在这条链路上有一到多个数据起点(元数据),并通过该点不断衍生拓展新的节点(衍生数据),形成一个庞大的网状结构。当你修改数据起点时,所有存在在网上的节点值都将同步更新

 

 

 

函数式编程

函数式编程(Functional Programming)是一种结构化编程方式,力求将运算过程写成一系列嵌套的函数调用。源于JS中“万物皆对象”的理念,函数式编程认定函数是第一等公民,可以赋值给其他变量、用作另一个函数的参数或者作为函数返回值来使用。

函数式编程的核心是根据元数据生成新的衍生数据,提供唯一确定的输入,函数将返回唯一确定的输出,它并不会修改原有变量的值。这在运用JS闭包概念进行开发时尤为重要,在函数作用域内调用域外或全局的变量时并不会修改它们的值,安全无污染

Vue中的数据链

Vue实例提供了computed计算属性选项,以供开发者生成衍生数据对象。虽然计算属性以函数形式声明,却并不接受参数,也只能以属性的方式调用。由于计算属性的this指向Vue实例,所以它可以获取实例上所有已挂载的可见属性。下面来看一个示例:

 

 

 

 

数据绑定视图

这是一个含有字符串类型属性profile的对象:

 

 

 

 

 

 

在这里可以停顿一下,想一想,对象属性被赋值时调用的set有何妙用呢?下面来看一段有关defineProperty的代码:

在Vue中,当我们把普通的JavaScript对象传给Vue实例的data选项时,Vue将遍历对象属性,并使用Object.defineProperty将其全部转化为getter/setter,并在组件渲染时将属性记录为依赖。之后当依赖项的setter函数被调用时,会通知watcher重新计算并更新其关联的所有组件。由于Object.defineProperty是ES5中一个无法shim(自定义拓展)的特性,所以Vue应用无法运行在不支持Object.defineProperty的IE8及其以下版本浏览器上。

 

posted on 2020-06-02 21:32  gylang  阅读(29)  评论(0编辑  收藏  举报