当前位置: 首页 > news >正文

张家港快速网站建设中国教育培训网

张家港快速网站建设,中国教育培训网,利用网络媒体营销来做电商网站论文,做的好的公司网站Vue面试题大全一.vue的基本原理二.双向数据绑定的原理三.使用object.defineProperty()来进行数据劫持有什么缺点?一.vue的基本原理 当一个vue实例创建的时候,vue会遍历data中的属性,用object.defineProperty,将它们转为getter/se…

Vue面试题大全

    • 一.vue的基本原理
    • 二.双向数据绑定的原理
    • 三.使用object.defineProperty()来进行数据劫持有什么缺点?

一.vue的基本原理

当一个vue实例创建的时候,vue会遍历data中的属性,用object.defineProperty,将它们转为getter/setter,并且在内部追踪相关依赖,在属性被访问和修改时通知变化。每个组件实例都有相应的watcher程序实例,它会在组件渲染的过程中把谁能够记录为依赖,之后依赖的setter被调用时,会通知wacther重新计算,从而导致它关联的组件得以更新。

二.双向数据绑定的原理

vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;
VUE双向数据绑定,其核心是 Object.defineProperty()方法,给Vue中的数据绑定get和set方法,当获取数据的时候,调用get方法,修改data中的数据的时候调用set方法,通过watcher监听器去更新视图,完成数据的双向绑定。

 1. 需要observe的数据对象进行递归遍历,包括子属性对象的属性,都加上setter和getter这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化。2. compile解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变大,收到通知,更新视图。3.watcher订阅者是observer和compile之间通信的桥梁,主要做的事情是:1*.在自身实例化时往属性订阅器里面添加组件2*.自身必须有一个update()方法.3*待属性变动dep.notice()通知时,能调用自身的update()方法,并触发complie中绑定的回调,则功成身退。4. MVVM作为数据绑定的入口,整合observer、compile和watcher三者,通过observer来监听自己的model数据变化,通过compile来解析编译模板指令,最终利用watcher搭起来Observer和Compile之间的通信桥梁,达到数据变化,视图更新,视图交互话变化,数据model变更的双向绑定效果。

三.使用object.defineProperty()来进行数据劫持有什么缺点?

在对一些属性进行操作时,使用这种方法无法拦截,比如通过下标的方式修改数组数据,或者给对象新增属性,这都不能触发组件的重新渲染,因为object.defineProperty不能拦截到这些操作。更精确的来说,对于数组而言,这都不能触发组件的重新渲染,因为object.defineProperty不能拦截到这些操作。更精确的来说,对于数组而言,大部分操作都是拦截不到的,只是vue内部通过重写函数的方式解决; 这个问题。
在vue3.0中已经不使用这种方式了,而是通过proxy对对象进行代理,从而实现数据劫持。使用proxy的好处是它可以完美的监听任何方式的数据改变,唯一的缺点是兼容性问题,因为proxy是es6的语法。
四.MVVM、MVC 、MVP、的区别?
mvc,mvp,mvvm是三种常见的架构设计模式,主要是通过分离关注点的方式来组织代码结构,优化开发效率。
在开发单页面应用时,往往一个路由对应了一个脚本文件,所有的页面逻辑都在一个脚本文件里。页面的渲染,数据的获取,对用户事件的响应所有的应用逻辑都混合在一起,这样开发简单项目的时候,可能看不出什么问题来,但是如果项目变得复杂,那么整个文件就会 变得冗长,混乱,这样对项目的开发和后期的项目维护非常不利的。
(1)MVC

MVC:通过分离model、view和controller的方式来组织代码结构。其中view负责页面的显示逻辑;
model负责存储页面的业务数据,以及对应数据的操作。并且View和Model应用了观察者模式,当Model层发生改变的时候他会通知有关View层更新页面。Controller层是view层和model层的纽带,它主要负责用户与应用的响应操作,当用户与页面产生交互的时候,controller中的事件触发器就开始工作了,通过调用model层来完成对model的修改,然后,model层再去通知view层更新。

(2)MVVM

  1. MVVM分为model,view,viewmodel; Model代表数据模型,数据和业务逻辑都在model层中定义;

  2. view代表ui视图,负责数据的展示。

  3. viewmodel负责监听model中数据的改变并且控制视图的更新,处理用户交互操作;

    Model和view没有直接关联,而且通过viewmodel来进行联系的,model和viewmodel之间有着双向数据绑定的联系。因此当model中的数据改变时会触发view层的刷新,view中由于用户交互操作而改变的数据也会在model中同步。
    这种模式实现了Model和view的数据自动同步,因此开发者只需要专注于数据的维护操作即可,而不需要自己操作DOM.

(3)MVP
MVP模式与MVC唯一的不同在于presenter和controller。在MVC模式中使用观察者模式,来实现当model层数据发生变化的时候,通知view层的更新。这样view层和model层耦合在一起,当项目逻辑变得复杂的时候,可能会造成代码的混乱,并且可能会对代码的复用性造成一些问题.MVP的模式通过使用presenter来实现对view层和model层的解耦.
MVC中controller只知道model的接口,因此他没有办法控制view层的更新,MVP模式中,View层的接口暴露给了presenter因此可以在persenter中将Model的变化和View的变化绑定在一起,以此来实现View和model的同步更新.这样就实现了对view和model的解耦,persenter还包含了其他的响应逻辑。

http://www.ds6.com.cn/news/1750.html

相关文章:

  • wordpress自建会员重庆百度关键词优化软件
  • 马洪旭 做的网站大学磁力岛引擎
  • 做网站设计答辩问题宁德市安全教育平台
  • 景区网站建设方案 费用小说关键词搜索器
  • 厦门市同安区建设局公开网站产品营销方案
  • 沧州网站制作费用百度公司官网入口
  • wordpress 图片延迟哈尔滨seo关键词优化
  • 代理商加盟项目网站seo关键词大搜
  • 开个做网站的公司 知乎原版百度
  • 如何做漂亮的网站郑州网站推广电话
  • 做外贸网站推广什么比较好搜索引擎营销简称seo
  • 网站建设.龙兵科技制作网页的软件有哪些
  • 公司网站建设有哪些域名解析查询站长工具
  • 手机怎么做网站服务器营销计划书7个步骤
  • 网站图片翻页怎么做如何建立自己的网站
  • 蒙自做网站的公司服务之家网站推广公司
  • 网站建设服务费的会计处理百度app
  • 哪个网站做贺卡做的好免费做网站自助建站
  • 网络工作室照片网站排名优化方法
  • 六安网站线上引流多少钱百度知道官网登录入口
  • 一个做网站编程的条件seo免费推广软件
  • 购物车网站源码百度下载安装到桌面
  • 邢台123式的网站怎么做营销软文范例
  • 重庆云阳网站建设公司推荐产品推广计划
  • 17做网店这个网站好不好百度电脑版网页
  • 广西知名网站设计搜索引擎优化的方式
  • linux下用python做网站百度热门搜索排行榜
  • wordpress文章指定页面显示标题苏州seo公司
  • 该如何选择深圳网站建设公司小程序开发收费价目表
  • 东营网站建设目前网络推广平台