当前位置: 首页 > 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.khdw.cn/news/2806.html

相关文章:

  • vi设计 站酷网站策划方案
  • 专业的定制型网站建设广州网络公司
  • 免费网站转app百度问一问
  • 餐饮如何做网络营销seo优化教程自学
  • 县四项措施全力推进政府网站集约化建设点石关键词排名优化软件
  • ps做 网站标准尺寸网站检测
  • 网络舆情分析的免费网站活动推广
  • 东营高端网站建设wordpress建站
  • 注册网站账号违法吗电商网站前端页面内容编写
  • 网站开发怎么报价单郑州seo地址
  • 网站建设价格山东济南兴田德润什么活动seo兼职外包
  • 网站功能说明怎么做seo优化资源
  • 自己做网站哪家好软文素材
  • html5网站制作教程p2p万能搜索种子
  • 世界十大网站排名googlechrome
  • 做的比较好的家具网站首页品牌营销策划公司
  • 太原制作网站的公司市场推广方案模板
  • 没有rss源的网站如何做rss订阅奶茶推广软文200字
  • 微信小程序服务器费用seo怎么学
  • 娄星区建设局网站网站免费建站app
  • 优秀网站作品截图百度推广平台登录入口
  • 如何做网站站长seo建设者
  • 中山网站建设技术sem推广案例
  • 广州企业网站设计方案建立自己的网站平台
  • 做影集的网站或软件下载哪里有学市场营销培训班
  • 怎样手机网站建设如何在百度推广网站
  • 网络安全企业使用最佳搜索引擎优化工具
  • 建设一中校园网站南宁百度网站推广
  • 南京学做网站百度经验手机版官网
  • 做明星网站市场营销网站