zoukankan      html  css  js  c++  java
  • mvvm

      在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。 MVC模型关注的是Model的不变,所以,在MVC模型里,Model不依赖于View,但是 View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。

     MVVM在概念上是真正将页面与数据逻辑分离的模式,它把数据绑定工作放到一个JS里去实现,而这个JS文件的主要功能是完成数据的绑定,即把model绑定到UI的元素上。

     有人做过测试:使用Angular(MVVM)代替Backbone(MVC)来开发,代码可以减少一半。

    此外,MVVM另一个重要特性,双向绑定。它更方便你同时维护页面上都依赖于某个字段的N个区域,而不用手动更新它们。
      1.旧浏览器逐渐淘汰,移动端需求增加
    
      2.前端交互越来越多,功能越来越复杂
    
      现如今,前端可谓是包罗万象,产品形态五花八门,涉猎极广。高大上的技术库和框架,酷炫的运营活动页面和好玩的H5小游戏,不过这些一两个文件的小项目并非是前端技术的主要应用场景,更具商业价值的是复杂的web应用,它们功能完善,页面繁多,为用户提供了完整的产品体验,例如新闻趣味站,在线购物平台, 社交网络,金融信贷应用,音乐互动社区,视频分享平台,打车出行平台等等,这些网站和平台的共同特点就是交互多,功能复杂。
    
     3.架构从传统的后台MVC向REST API+前端MV*迁移
    
     传统的后台MVC方式,是当前端与后端发生一些数据交互的时候,会刷新整个页面,这样的用户体验是非常差的,因此,我们通过ajax的方式,和后端REST API做通信,异步刷新页面的某个区块,来优化和提升体验,同时把MV*拿到前端来做。

    MVVM框架

      MVVM框架主要包括三个部分Model、View和ViewModel,Model指的是数据部分,对应到前端就是一些Javascript对象,View指的视图部分,对应到前端就是DOM,ViewModel就是连接数据和视图的中间件,在MVVM的框架下视图和数据是不能直接通信的,它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。以上便是MVVM的一些基本概念。

    MVVM框架的主要应用场景

      1)针对具有复杂交互逻辑的前端应用
    
      2)提供基础的架构抽象
    
      3)通过Ajax数据持久化,保证前端用户体验
    
      好处就是当前后端进行一些数据交互的时候,前端可以通过Ajax请求对后端做数据持久化,不需要刷新整个页面,只需要改动DOM里需要改动的那部分数据和内容,特别是对于移动端应用场景,刷新页面的代价太昂贵,会重新加载很多资源,虽然有些资源会被缓存,但是页面的DOM、JS、CSS都会被浏览器重新解析一遍,因此,移动端页面经常会做成SPA单页应用,在这个基础上就诞生了很多MVVM框架,如Angular、React、Vue

    Vue.js的核心思想

      Vue.js的核心思想包括两个方面:数据驱动和组件化
    
      数据驱动:DOM是数据的一种自然映射,在vue.js中只需要操作数据,vue.js通过directives指令去对DOM做一层封装,当数据发生变化,会通知指令去修改对应的DOM,数据驱动DOM变化,DOM是数据的一种自然映射,vue.js还会对操作做一些监听,当我们修改视图的时候,vue.js监听到这些变化,从而去改变数据,这样就实现了数据的双向绑定。
    
      组件化的目的是扩展HTML元素,封装可重用的代码
    
      组件设计原则:
    
      1)页面上每个独立的可视/可交互区域视为一个组件,
    
      2)每个组件对应一个工程目录,组件所需要的各种资源在这个目录下就近维护,
    
      3)页面不过是组件的容器,组件可以嵌套自由组合形成完整的页面。
  • 相关阅读:
    freemarker.core.ParseException:Unexpected end of file reached
    freemarker.template.TemplateException:Error executing macro:mainSelect
    Perl--子程序传参
    MFC管理员权限(UAC下的程序权限提升)
    高级编程
    vmstat 查看堵塞的队列
    linux crontab 文件位置和日志位置
    linux 定时执行shell脚本 crontab
    Redis 命令参考 » Server(服务器)
    AiX--Ipcs 资源
  • 原文地址:https://www.cnblogs.com/weihengblogs/p/8663746.html
Copyright © 2011-2022 走看看