Vue的框架模型

常见的前端框架有:angular;reat;vue。

  • angular:MVC模型,双向数据绑定,依赖注入。
  • reat:虚拟DOM,即与DOM一样的对象,操作对象避免DOM的直接操作从而提高性能,性能上碾压angular。
  • vue:MVVM模式,结合angular和react的优点,高性能高效率框架。

一、MVC模式

MVC 模式的目的是实现一种动态的程序设计,简化后续对程序的修改和扩展,并且使程序某一部分的重复利用成为可能。除此之外,MVC 模式通过对复杂度的简化,使程序的结构更加直观。软件系统在分离了自身的基本部分的同时,也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长进行相关的分组:

  • 模型(Model):程序员编写程序应有的功能(实现算法等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能);
  • 控制器(Controller):负责转发请求,对请求进行处理;
  • 视图(View):界面设计人员进行图形界面设计。

MVC 模式中三个组件的详细介绍如下:

  • 模型(Model):用于封装与应用程序业务逻辑相关的数据以及对数据的处理方法。Model 有对数据直接访问的权力,例如对数据库的访问。Model 不依赖 View 和 Controller,也就是说, Model 不关心它会被如何显示或是如何被操作。但是 Model 中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此 Model 的 View 必须事先在此 Model 上注册,由此,View 可以了解在数据 Model 上发生的改变。(如,软件设计模式中的“观察者模式”);
  • 视图(View):能够实现数据有目的的显示(理论上,这不是必需的)。在 View 中一般没有程序上的逻辑。为了实现 View 上的刷新功能,View 需要访问它监视的数据模型(即 Model),因此应该事先在被它监视的数据那里注册;
  • 控制器(Controller):起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据 Model 上的改变。

 从 MVC 模式的一般理解来看,视图层与模型层是存在直接联系的,并且模型层的变化会通过视图层反映出来,这确实是 MVC 模式的标准理解,不过在我目前接触到的实际应用中,更多的情况是,视图层与模型层是通过控制层联系起来的,两者之间并无直接的联系,三者之间的关系更类似下图所示:

二、MVP模式

MVP模式属于Android架构设计。

  • View: 视图层,对应xml文件与Activity/Fragment;(用户交互相关的操作接口定义,显示数据, 并向Presenter报告用户行为)
  • Presenter: 逻辑控制层,同时持有View和Model对象;(从Model拿数据,应用到UI层,管理UI的状态,响应用户的行为相当于view和model的传话筒)
  • Model: 实体层,负责获取实体数据(数据操作,通过接口将数据返回给presenter层,负责与网络层和数据库层的逻辑交互)

View与Model并不直接交互,而是使用Presenter作为View与Model之间的桥梁。其中Presenter中同时持有View层以及Model层的Interface的引用,而View层持有Presenter层Interface的引用。当View层某个界面需要展示某些数据的时候,首先会调用Presenter层的某个接口,然后Presenter层会调用Model层请求数据,当Model层数据加载成功之后会调用Presenter层的回调方法通知Presenter层数据加载完毕,最后Presenter层再调用View层的接口将加载后的数据展示给用户。这就是MVP模式的整个核心过程。 

 三、MVVM模式

  • M:模型(Model) :对应 data 中的数据
  • V:视图(View) :模板
  • VM:视图模型(ViewModel) : Vue 实例对象

MVVM 源自于经典的 Model–View–Controller(MVC)模式(期间还演化出了 Model-View-Presenter(MVP)模式,可忽略不计)。MVVM 的出现促进了 GUI 前端开发与后端业务逻辑的分离,极大地提高了前端开发效率。MVVM 的核心是 ViewModel 层,它就像是一个中转站(value converter),负责转换 Model 中的数据对象来让数据变得更容易管理和使用,该层向上与视图层进行双向数据绑定,向下与 Model 层通过接口请求进行数据交互,起呈上启下作用。如下图所示: MVVM模式

MVVM 已经相当成熟了,主要运用但不仅仅在网络应用程序开发中。KnockoutJS 是最早实现 MVVM 模式的前端框架之一,当下流行的 MVVM 框架有 Vue,Angular 等。

组成部分

简单画了一张图来说明 MVVM 的各个组成部分:

MVVM分层示意图

分层设计一直是软件架构的主流设计思想之一,MVVM 也不例外。

⭐View 层

View 是视图层,也就是用户界面。前端主要由 HTML 和 CSS 来构建,为了更方便地展现 ViewModel 或者 Model 层的数据,已经产生了各种各样的前后端模板语言,比如 FreeMarker、Marko、Pug、Jinja2等等,各大 MVVM 框架如 KnockoutJS,Vue,Angular 等也都有自己用来构建用户界面的内置模板语言。

⭐ Model 层

Model 是指数据模型,泛指后端进行的各种业务逻辑处理和数据操控,主要围绕数据库系统展开。后端的处理通常会非常复杂:

⭐ ViewModel 层

ViewModel 是由前端开发人员组织生成和维护的视图数据层。在这一层,前端开发者对从后端获取的 Model 数据进行转换处理,做二次封装,以生成符合 View 层使用预期的视图数据模型。需要注意的是 ViewModel 所封装出来的数据模型包括视图的状态和行为两部分,而 Model 层的数据模型是只包含状态的,比如页面的这一块展示什么,那一块展示什么这些都属于视图状态(展示),而页面加载进来时发生什么,点击这一块发生什么,这一块滚动时发生什么这些都属于视图行为(交互),视图状态和行为都封装在了 ViewModel 里。这样的封装使得 ViewModel 可以完整地去描述 View 层。由于实现了双向绑定,ViewModel 的内容会实时展现在 View 层,这是激动人心的,因为前端开发者再也不必低效又麻烦地通过操纵 DOM 去更新视图,MVVM 框架已经把最脏最累的一块做好了,我们开发者只需要处理和维护 ViewModel,更新数据视图就会自动得到相应更新,真正实现数据驱动开发。看到了吧,View 层展现的不是 Model 层的数据,而是 ViewModel 的数据,由 ViewModel 负责与 Model 层交互,这就完全解耦了 View 层和 Model 层,这个解耦是至关重要的,它是前后端分离方案实施的重要一环。

不管是哪个,让Model和View不能直接通信是非常关键的限制。让Model和View直接通信在系统变得复杂时会成为灾难,Model和View直接耦合,会使得系统失控。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue框架是一种流行的JavaScript前端框架,用于构建用户界面。它具有简单易学、灵活高效的特点,非常适合用于搭建旅游网站。 下面是使用Vue框架搭建旅游网站的一般步骤: 1. 安装Vue:首先,你需要在你的项目中安装Vue。你可以通过npm或者yarn来安装Vue,具体的安装命令可以参考Vue官方文档。 2. 创建Vue实例:在你的项目中,创建一个Vue实例。你可以在HTML文件中使用`<script>`标签引入Vue库,并在JavaScript代码中创建一个Vue实例。 3. 设计数据模型:在Vue实例中,定义你的数据模型。对于旅游网站,你可以定义一些数据对象,如旅游目的地、旅游套餐、用户评论等。 4. 创建组件:使用Vue的组件功能,将你的页面划分为多个可复用的组件。例如,你可以创建一个目的地组件、套餐列表组件、评论组件等。 5. 绑定数据和事件:在组件中,使用Vue的数据绑定功能将数据模型与页面元素进行绑定。这样,当数据发生变化时,页面会自动更新。同时,你也可以在组件中定义事件处理函数,响应用户的操作。 6. 路由管理:使用Vue的路由功能,实现页面之间的导航。你可以定义不同的路由路径,对应不同的组件,从而实现页面的切换和导航。 7. 样式设计:使用CSS来美化你的旅游网站。你可以使用Vue的样式绑定功能,将样式与组件进行关联。 8. 数据交互:通过Vue的HTTP库,与后端服务器进行数据交互。你可以发送HTTP请求获取旅游目的地、套餐信息,并将用户评论等数据发送到服务器。 9. 部署上线:最后,将你的旅游网站部署到服务器上线。你可以使用Vue的打包工具,将你的代码打包成静态文件,并上传到服务器。 以上是使用Vue框架搭建旅游网站的一般步骤。当然,具体的实现细节还需要根据你的需求和项目情况来确定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值