vuex源码分析(二)——双向数据绑定
通过Compile来解析编译模板指令(vue中是用来解析 {{}}),最终利用watcher搭起observer和Compile之间的通信桥梁,达到数据变化 —视图更新;视图交互变化(input)—数据model变更双向绑定效果。
vue双向数据绑定是通过 数据劫持 结合 发布订阅模式 实现的,数据和视图同步,即数据发生变化,视图跟着变化,视图变化,数据也随之发生改变 核心:Object.defineProperty()参数: obj :要定义属性的对象。
于是vue中就是每当有这样的可能用到双向绑定的指令,就在一个Dep中增加一个订阅者,其订阅者只是更新自己的指令对应的数据,也就是v-model=name和{{name}}有两个对应的订阅者,各自管理自己的地方。
vue的数据双向绑定是通过数据劫持和发布-订阅者功能来实现的。实现步骤:实现一个监听者Oberver来劫持并监听所有的属性,一旦有属性发生变化就通知订阅者。
能说说vue的响应式原理吗?
1、Vue响应式原理核心是 数据劫持,采用 ES5 的 object.defineproperty 的 getter 和 setter 方法。
2、vue响应式基本原理是基于Object.defineProperty(obj,prop,descriptor),descriptor里面可以定义get和set方法,可以在获取属性值事触发get方法(可以收集依赖),设置属性值时触发set方法(更新依赖)。
3、当一个vue实例加载时,会进行初始化,将他的配置项options和mixins的内容合并,以options为主,而在初始化data时,会对data对象进行数据劫持,并做代理,通过Object。
vue响应式原理是什么?
当一个vue实例加载时,会进行初始化,将他的配置项options和mixins的内容合并,以options为主,而在初始化data时,会对data对象进行数据劫持,并做代理,通过Object。
vue响应式数据原理是利用Object。defineProperty这个API来实现,该API可以监听对象属性的get和set,当对象属性被调用时,它能够自动触发更新视图。Vue的响应式实现,便是通过使用Object。
Vue响应式原理核心是 数据劫持,采用 ES5 的 object.defineproperty 的 getter 和 setter 方法。
bootstrap和vue的区别是什么?
页面的呈现据说比React还快。组件化(实际上React也有组件化)。这和BootStrap这种组件化的概念还有点不同,Vue的组件化,已经把作用域冲突的问题给搞定了。另外,js测试也变得更专业化了(有点类似junit)。
Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。
一般来说,vue更好。vue是数据驱动模式,可以很方便修改页面的数据,并且可以同步修改。bootstrap一般使用jquery,如果是需要修改dom没有那么方便。另外,也要看个人习惯和项目情况。
bootstrap主要是用来实现响应式快速布局前端框架,侧重与页面布局及样式。vue是前端工程化框架,确切地说不包含css样式,是目前比较流行的一种js框架。如果打算自己写样式就可以不学这个框架。
Web前端开发框架有Bootstrap、Vue、Amaze UI。