Vue实例
Vue是如今前端比较火的javascript MVVM的框架,其主要思想是数据驱动与组件化。
在MVVM框架中,View层和Model层相互之间是没有联系的,通过ViewModel使View和Model之间产生交互。ViewModel是Vue实例的核心,创建Vue实例主要就是创建ViewModel的各个组成部分。
DOM Listener和Data Bindings可以看成数据绑定的两个核心工具。DOM Listener主要监听View层中的DOM元素,当DOM元素发生改变时,Model层中数据也会随之发生改变。Data Bindings主要监听Model层中数据,当数据发生改变时,View层中的DOM元素也会改变。
Vue实例主要包括创建,运行,销毁三个阶段,这期间会发生一系列的时间,这些事件就是Vue的生命周期函数。数据驱动是指当Model中的数据发生改变时,页面上的数据也会随之发生改变。通过Vue实例的生命周期简单的介绍一下数据驱动的实现。
(1)创建阶段:首先通过new Vue()创建一个空的Vue实例。通过Init Events and Lifecycle初始化Vue实例中的默认事件以及生命周期钩子函数,此时会自动执行beforecreate这个生命周期钩子函数,这个函数被执行时data,methods,filter等指令对象还没有被初始化。通过Init injections and reactivity初始化注入和校验,执行created函数时,data,methods等指令对象已经被初始化了。因此如果要调动methods方法或者获取数据,最早只能通过created函数使用。此时初始化阶段结束,进入编译阶段。首先判断是否有“el”这个对象,若没有则停止这个生命周期,知道手动挂载“el”对象。若有则判断是否有template这个对象,如果有,则将这个模板编译到render函数中,render函数的作用是将HTML节点渲染成虚拟DOM。如果没有template这个对象,则将外部HTML作为template进行渲染。在执行beforemount这个钩子函数时,已经通过编译在内存生成了DOM,但是并没有挂载到页面中去。通过create VM.$el and replace “el” with it将内存中的虚拟DOM挂载到真实的页面中去。在执行mounted这个钩子函数时,组建的创建阶段已经完成。
(2)运行阶段:这个阶段主要有两个生命周期钩子函数。这两个钩子函数根据data数据的改变而依次执行。当data数据发生改变时,将执行beforeUpdate,此时data数据是最新的。而页面中的数据还是旧的,这两个数据还没有同步。通过Virtual DOM re-render and patch虚拟DOM的重新渲染。当data数据发生改变时,会在内存中重新渲染出一份虚拟DOM,当虚拟DOM发生改变时,会将该虚拟DOM挂载到页面中去。此时就完成了从data(Model)到页面(View)的操作,即完成了数据驱动。
(3)销毁阶段:在执行beforeDestory钩子函数时,Vue实例还没有真正被销毁,data,methods等选项对象还是可用的。当执行destoryed钩子函数时Vue实例已经被销毁,实例中的一些选项对象已经不可用了。
- ExecuteReader在执行有输出参数的存储过程时拿不到输出参数
- CTF---Web入门第十三题 拐弯抹角
- 小案例(四):销售额下滑(python)
- 【最新TensorFlow1.4.0教程01】TF1.4.0介绍与动态图机制 Eager Execution使用
- 把插入的数据自动备份到另一个表中 ~ 语境:本地和服务器自动同步
- 数据分析小案例(三):调查问卷(python)
- CTF---Web入门第十六题 天下武功唯快不破
- 数据分析小案例(二):面包是不是变轻了(python)
- 数据分析小案例(一):商业街抽奖(python)
- Bagging算法(R语言)
- iOS @property探究(一): 基础详解你要知道的@property都在这里
- 在创建带输出参数和返回值的存储过程时---犯下的一个低级错误
- iOS block探究(二): 深入理解你要知道的block都在这里
- 使用开源人脸特征提取器进行脸部颜值评分
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- laravel5.1框架基础之Blade模板继承简单使用方法分析
- Yii框架的布局文件实例分析
- React Native 实现热更新并自动签名打包功能
- PHP命名空间用法实例分析
- Android自定义控件实现方向盘效果
- Android 使用fast-verification实现验证码填写功能的实例代码
- android studio 3.6.0 绑定视图新特性的方法
- Android ListView UI组件使用说明
- 解决laravel 出现ajax请求419(unknown status)的问题
- php求斐波那契数的两种实现方式【递归与递推】
- Android 自定义日期段选择控件功能(开始时间-结束时间)
- Yii框架日志操作图文与实例详解
- Flutter 实现虎牙/斗鱼 弹幕功能
- Yii框架中用response保存cookie,用request读取cookie的原理解析
- Yii框架操作cookie与session的方法实例详解