MVC和MVVM

MVC

Input 被引导到 Controller.

Controller 决定渲染哪个 View, 并且生成 View 对应的 Model.

一个 Controller 可以从很多个 View 当中选择一个渲染.

View 没有他的 Controller 的信息.

业务逻辑存在于 Controller 当中.

当多个用户请求之间(基于 HTTP, 无状态的协议), 状态不能被维护的情况下, MVC 是有用的.

代码举例:

//创建一个Data类,来表示一个实体类型
var Data = Backbone.Model.extend({
    //定义每个Data类实例的默认值
    defaults: function () {
        return {
            name: ''
        }
    },
    //解析异步请求返回的结果,fetch方法与save方法都会调用它
    parse: function (res) {
        return res.data;
    }
});

//创建一个AppView类,来完成这个页面的所有UI功能
var AppView = Backbone.View.extend({
    //指定这个AppView的实例关联的DOM元素
    el: 'body',
    //指定这个AppView实例在做DOM更新时要采用的html模板
    template: _.template(document.body.innerHTML),
    //定义这个AppView内部要注册的一些事件,类似jquery的委托方式注册
    events: {
        'click #btn_save': 'save'
    },
    initialize: function () {
        //监听关联的model实例的change事件,只要model实例的属性发生变化,都会调用自身的render方法
        this.listenTo(this.model,'change', this.render);

        this.$input = $('#new_input');
    },
    render: function () {
        //根据model实例的内容重新渲染html
        this.$el.html(this.template(this.model.attributes));
        return this;
    },
    save: function(){
        var name = $.trim($input.val());
        if (!name) return;

        //直接调用model的save方法来与服务器进行同步
        this.model.save({name: name});
    }
});

//创建一个Data实例
var model = new Data();

//创建一个AppView的实例,并把它关联的model属性指定为上一步创建的Data实例
new AppView({
    model: model
});

//表示页面要编辑的数据的唯一标识,新增时为空,编辑时才有值
var id = (function () {
    //获取页面id,详细实现略
})();

if (id) {
    //编辑模式下设置id
    model.set('id', id);
    //通过fetch自动发送请求与后台同步
    model.fetch();
}

MVVM

Input 被引导到 View.

View 只知道 ViewModel, 不知道其他的信息.

ViewModel 只知道 Model, 不知道其他的信息.

View 从 ViewModel 获取数据, 而不是直接从 Model. 这通常通过数据绑定实现.

State 跟业务逻辑存在于 ViewModel.

ViewModel 可以被认为是 UI 的抽象表示.

State 可以在多个用户请求能被维护的情况下会很有用(比如 Silverlight, WPF 等).



一个ViewModel接口提供了两个东西:动作和数据。动作改变Model的下层(click listener,监听文字改变的listener等等),而数据则是Model的内容。




iOS MVCMVVM是两种常见的应用程序架构模式。MVC(Model-View-Controller)是构建iOS应用程序的标准模式,其中Model负责处理数据,View负责显示界面,而Controller负责协调Model和View之间的交互。然而,随着应用程序的复杂性增加,MVC模式可能会导致代码紧密耦合和难以维护的问题。因此,MVVM(Model-View-ViewModel)在iOS开发中逐渐崭露头角,它在设计思路上与MVC相似,但引入了新的组件ViewModel来解决MVC的缺点。 MVVM是由微软提出的一种架构模式。它规范了视图和控制器之间紧密耦合的性质,并引入了ViewModel组件。在MVVM中,ViewModel起到了连接Model和View的角色,它负责处理业务逻辑和数据转换,并通过数据绑定将数据传递给View。通过使用MVVM,我们可以更好地分离界面逻辑和业务逻辑,使代码更加模块化和可测试。 总结来说,iOS MVCMVVM都是常见的应用程序架构模式,用于组织和管理iOS应用程序的代码。MVC是传统的模式,而MVVM是一种更现代化且具有更好可扩展性和可维护性的模式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [iOS MVCMVVM、MVP详解](https://blog.csdn.net/u013712343/article/details/106686276)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [iOS中MVC已死MVVM当立??](https://blog.csdn.net/weixin_33811539/article/details/88017811)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值