首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在MVVM中,我的大多数特定于平台的代码应该放在哪里?(视图旁边)

在MVVM中,大多数特定于平台的代码应该放在视图旁边。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?

只是想说说我们究竟应该如何理解 M-V-VM,当我们真正开始写代码时,应该在里面的每一层里写些什么。 ---- MVVM,当然三层——M-V-VM。...其中 M 和 V 中文词语和英文单词是很好理解,但是 VM 就不是个日常用词;于是各种不知道应该放在哪里代码便一窝蜂全放进了 VM ,最终导致了 VM 无限膨胀,成百上千行也是司空见惯啊!...于是那么多代码写到哪里呢? 答案:MVVM 之外。 ---- 我们代码不止 MVVM 三层 MVVM 不是应用程序架构,只是一个 GUI 类程序开发模式而已。...MVVM 只是数据驱动型 GUI 程序建议开发模式;无论是三层哪一层,本质上都是解决 UI 问题。 而非 UI 问题根本就不在 MVVM 讨论之列。...MVVM 模式按此理解后,我们将更能够将代码放到合适位置,避免 VM 代码膨胀: 公共控件或者辅助代码应该抽出来放到别处,比如形成公共组件 一些非 UI 业务功能单独做,独立于 MVVM 模式,

89410

每日一面试题之Day1

简述MVVM PS:很多人去面试时候,面试官问你题目里大多数都会带着一题,他会问你,什么叫mvvm,你对mvvm有多少了解。...MVVM框架下视图和模型是不能直接通信。...M和V指意思和MVVMM和V意思一样。C即Controller指的是页面业务逻辑。使用MVC目的就是将M和V代码分离。‘MVC是单向通信。...MVC和MVVM区别并不是VM完全取代了C,ViewModel存在目的在于抽离Controller展示业务逻辑,而不是替代Controller,其它视图操作业务等还是应该放在Controller实现...在过去10年,我们已经把很多传统服务端代码放到了浏览器,这样就产生了成千上万行javascript代码,它们连接了各式各样HTML 和CSS文件,但缺乏正规组织形式,这也就是为什么越来越多开发者使用

31030
  • MVVM伪框架结构和MVCM实现机制

    ------ MVVM并非框架,而只是简单文件夹分类 ------ MVVM被引入前因后果 大概是2010年左右移动端开发火了起来,起初是iOS,Android, WinPhone三个大平台竞争...对了就叫视图模型层VM吧!视图模型层类定义了一个给外部使用唯一接口来供C层调用。这样终于把一大部分代码从C层抽离出来了。已经成功实现了C层进一步瘦身,并抽象出了一个视图模型层了!...(不过哪里好像不对,视图模型层设计到了视图、模型、视图模型层三方面的交互和耦合) 不过没有关系,反正C层进一步瘦身成功了!,看看还可不可以继续瘦身C层? ?...MVVM各层依赖关系 很多视图事件是C层处理,那我是不是可以把C层事件处理也拿出来呢? 干脆就拿出来吧。但是怎么拿出来呢?...其实之所以说控制器膨胀根源在于我们手写布局视图控制器完成这里占用了非常多代码, 业务处理和实现也控制器完成。苹果和Google已经给出了通过SB和XML来实现视图构建。

    80230

    iOS 面试策略之经验之谈-架构选择

    首先就是代码均摊。试想如果所有代码都集中一个 UIViewController ,App 理论上确实能够运行,然而当调试时面对拥有庞大代码单个文件,我们需要花大量时间去找到发生问题源头。...由于绝大多数开发者对于部分架构并不熟悉,本节将着重对架构进行特点分析,并在其之间进行横向比较。 1.说说苹果官方 MVC 架构优缺点? 关键词:#耦合 MVC 优点有 2 个: 代码总量少。...网络层放在 Model ,其异步调用 API 请求会使得整个 Model 层变得复杂。若是将网络层 放在 ViewController ,则耦合进一步加剧,以上缺点更加放大。...注意 ViewModel 类绝对不能包含视图任何类或结构体。MVVM 示意图如下: [image] 6. 试比较 MVC,MVP,MVVM 三种架构。...MVP 和 MVVM 实际开发中视图层实现了 MVC 理论期望,即与中间层严格分离。

    1K30

    MVPMVCMVVM

    , 每个业务场景都能正常进行相应数据展示, 也有相应逻辑交互, 而完成这些东西, 加空格也就100行代码左右(当然, 这里忽略了一下Scene布局代码). 3.易拓展性: 无论产品未来想加回收站还是防御塔..., 需要只是新建相应MVC模块, 加到对应Scene即可. 4.可维护性: 各个模块间职责分离, 哪里出错改哪里, 完全不影响其他模块.... MVP ,Presenter 可以理解为松散控制器,其中包含了视图 UI 业务逻辑,所有从视图发出事件,都会通过代理给 Presenter 进行处理;同时,Presenter 也通过视图暴露接口与其进行通信...缺点: 由于对视图渲染放在了Presenter,所以视图和Presenter交互会过于频繁。如果Presenter过多地渲染了视图,往往会使得它与特定视图联系过于紧密。...可惜MVVM这几个英文单词并没有它一席之地,它最主要作用是View和ViewModel之间做了双向数据绑定。如果MVVM没有Binder,那么它与MVC差异不是很大。

    49220

    聊聊iOS MVC、MVP、MVVM以及 VIPER等代码组织方式

    MVP ,Presenter 可以理解为松散控制器,其中包含了视图 UI 业务逻辑, 所有从视图发出事件,都会通过代理给 Presenter 进行处理; 同时,Presenter 也通过视图暴露接口与其进行通信...iosMVVM编码可能会成这样 这个图解准确地描述了什么是 MVVM:一个 MVC 增强版, 我们正式连接了视图和控制器,并将表示逻辑从 Controller 移出放到一个新对象里, 即 View...VIPER并不复杂,它是将原来MVCController各种任务进行了清晰分解,代码时,你会很清楚你正在做什么。 事实上,它比使用了数据绑定技术MVVM更加简单,就是因为它职责明确。...和MVP负责业务逻辑Presenter不同,VIPERPresenter主要工作是View和Interactor之间传递事件, 并管理一些View展示逻辑,主要业务逻辑实现代码放在了Interactor...各部分遵循单一职责,可以很明确地知道新代码应该放在哪里。 * 隔离程度高,耦合程度低。一个模块代码不容易影响到另一个模块。 * 易于团队合作。

    4.2K21

    一种MVVM风格Android项目架构浅析

    前几天接触公司一Android项目,刚看代码时,不知道这么多层级代码都是干嘛,看着有点儿懵。只有清楚了结构和流程,才能够浩瀚代码里游刃有余。...MVVM 就是将其中View 状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。...这个时候MVVM就闪亮登场了。 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。...Android,布局里可以进行一个视图逻辑,并且Model发生变化,View也随着发生变化。 低耦合。以前Activity、Fragment需要把数据填充到View,还要进行一些视图逻辑。...这个应该 Bean文件夹MVVM文件夹定义Bean,以及BaseActivity完成DataBanding充当了View层。 至此,MVVM 各个层已经介绍完了。

    1.3K20

    唯一可行 iOS 架构

    诸如 MVVM 或 MVP 之类其他体系结构也基于这种分离。无论您针对哪个平台编写代码,使用哪种体系结构,都应始终进行这种分离。因此,这意味着该原则对 iOS 也很重要。...我们可以 interface builder 绘制视图而无需任何代码,并将所有用户操作链接到UIViewController。... OOP ,常见任务是了解我们应该创建哪些实体,如何将它们彼此关联以及如何命名它们,从而以最清楚地描述代码。...好了,在这种情况下,我们将根据 MVC 原理将表示和业务逻辑混合在一个不好。很难理解为什么有此代码。我们看不到该代码是针对哪个具体视图编写。最后,很难不同屏幕上重用此模型。...这种分离已成为 GUI 应用程序设计主要分离之一,它们对 iOS 也很有用。但是表示层分离通常是特定于平台

    1.3K20

    MVC, MVP, MVVM比较以及区别

    视图中一般没有程序上逻辑。为了实现视图刷新功能,视图需要访问它监视数据模型(Model),因此应该事先在被它监视数据那里订阅Model事件。...便于人才获取 MVC使用误区 1.把Model理解成实体类(Entity),MVCModel应该包含2部分功能,一部分是处理业务逻辑,一部分是提供View显示数据 2.把业务逻辑全部放在Controller...4、如果我们把逻辑放在Presenter,那么我们就可以脱离用户界面来测试这些逻辑(单元测试) 五, MVVM模式 5.1 MVVM模式设计思想 MVVM模式,一个ViewModel和一个View...UI使用平台. 5.2 MVVM模式结构图 这里是MVVM模式结构图,能够帮助更加容易理解MVVM模式: ?...(应该说WPF就是为使用MVVM设计) web应用,由于http是基于请求和响应方式协同工作, 无法一直保持连接状态,所以无法达到MVPPresenter之间消息传递和MVVMViewModel

    2.7K100

    iOS面试题:MVVM和MVC区别

    你可能试着把它放在Model对象里,但是也会很棘手,因为网络调用应该使用异步,这样如果一个网络请求比持有它model生命周期更长,事情将变复杂。...他们之间结构关系如下: 2.1 MVVM 基本概念 MVVM ,view 和 view controller正式联系在一起,我们把它们视为一个组件 view 和 view controller...都不能直接引用model,而是引用视图模型(viewModel) viewModel 是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码地方 使用MVVM会轻微增加代码量,但总体上减少了代码复杂性...2.2 MVVM 注意事项 view 引用viewModel ,但反过来不行(即不要在viewModel引入#import UIKit.h,任何视图本身引用都不应该放在viewModel)(PS...新技术面前,不盲从,也不守旧,一切决策都应该建立认真分析基础上,这样才能应对技术变化。 *** 更多:iOS面试题合集

    1.4K30

    构建一套最佳React 组件文件结构

    注意:有一个论点是,只有默认导出应该是公共,其余应该保持私有。 Test 测试 为什么将测试放在这里而不是放在单独tests目录?两个字-代管! 属于一起文件应该放在一起。...如果您想象编辑或者删除组件过程,此方法好处将变得非常明显。当所有事物都集中一个地方时,维护变得更加简单。 此外,测试通常用作文档。因此,将它们放在我们组件旁边非常有意义。...如果我们选择了CSS模块,则样式文件应与组件位于其目录。 Assets 资源文件 图像,图标或其他特定于组件资源文件应直接放置组件目录。再次托管!...保留在组件目录之外内容 这是一个很好规则:如果你曾经想使用除已从组件索引显式导出内容以外其他内容,则明确表明此特定代码段应放置在其他位置。 让给你举个例子: 让我们回到菜单组件。...我们应该将其从Menu组件取出,然后将其放在更高位置,也许放在我们常规utils文件夹

    1.1K10

    关于Android架构,你是否还在生搬硬套?

    本文不会具体去讲什么是MVC、MVP、MVVM,但我描述应该都是这些模式基石,从本质上讲明白为什么这样做,这样做好处是什么,有了这些底层思想支持再去看对应架构模式,相信会让你有一种焕然一新感觉...先大致将它分为两个方面: 界面交互逻辑:视图交互逻辑,比如手势控制、吸顶悬浮等等都是根据业务需要实现,所以严格来说这部分也属于业务逻辑。但这部分业务逻辑一般视图层实现。...为了方便大家理解下文将数据逻辑统称为业务逻辑。 前面我们说到,Android开发应该具备数据层跟视图层,那业务逻辑放在哪一层比较合适呢?...use case通常放在ViewModel/Presenter与数据层之间,业务逻辑以及Data Mapper都应该放在use case,每一个行为对应一个use case。...综上所述 合理分层可以提升复用性、降低模块间耦合性 Data Mapper 可以让视图层脱离于后端进行开发 复杂业务逻辑应该写到use case 数据驱动UI本质是控制反转 通过函数式编程可以写出更加安全代码

    86210

    “终于懂了“系列:Jetpack AAC完整解析(五)DataBinding 重新认知!

    明确了 DataBinding 职责边界后 应该知道了:原本逻辑代码 该怎么写还是怎么写,只不过不再需要 textView.setText(user.name),而是直接 user.setName...管理,并且 ViewModel 这一层只需负责状态数据本身变化,至于该数据布局是 被哪些视图绑定、有没有视图来绑定、以及怎么绑定,ViewModel 是不用关心。...数据值应 直接反映UI控件需要结果,而不是作为逻辑条件放在 xml 。...可见DataBinding Jetpack MVVM 架构 还是 有很大优势。 最后补充说明得了 Jetpack MVVM 架构 使用注意事项和原则,实际项目使用 应该会很有体会。...如果有问题或者想进群,号内有加我微信入口,可以拉你入群。技术学习道路上,我们一起前进!

    1.4K10

    WPF面试题-来自ChatGPT解答

    对于这些无法被捕获异常,我们无法通过全局异常处理来处理它们。开发过程,我们应该尽量避免这些异常发生,并在代码中进行适当异常处理,以确保应用程序稳定性和可靠性。 21....这种分离使得代码更加清晰、可维护和可测试。开发者可以专注于视图和模型开发,而不需要关注它们之间交互逻辑。 可重用性:MVVM模式鼓励将业务逻辑放在模型,将视图逻辑放在视图模型。...这种分离使得视图和模型可以独立地进行开发和测试,并且可以不同应用程序重用。视图模型可以被多个视图共享,从而提高了代码重用性。...MVVM 特性列表 清晰分层结构:MVVM模式将应用程序分为模型、视图视图模型三个层次,使得代码组织结构更加清晰明了,易于理解和维护。...可重用视图模型:视图模型可以被多个视图共享,从而提高了代码重用性。开发者可以将通用业务逻辑和数据转换逻辑放在视图模型,以便在不同视图中重用。

    40730

    1. VUE完整系统简介

    是有前端基础, 刚工作那会, 哪里分那么清楚啊, 前后端都得做, 所以, css, js, jquery, bootstrap都会点, 还系统学过ext, 哈哈,是不是都不知道是啥, 没事, 都过时了...MVVM没有MVC模式控制器,也没有MVP模式presenter,有的是一个绑定器。视图模型,绑定器视图和数据绑定器之间进行通信。...绑定器 声明性数据和命令绑定隐含在MVVM模式。绑定器使开发人员免于被迫编写样板逻辑来同步视图模型和视图微软堆之外实现时,声明性数据绑定技术出现是实现该模式一个关键因素   4....同时在这个过程也会运行一些叫做生命周期钩子函数,这给了用户不同阶段添加自己代码机会。...我们看到index.js没有主逻辑, 那主逻辑在哪里呢? 第二句话里面: import Vue from './instance/index' 导入了./instance/index文件.

    2K10

    “老坛泡新菜”:SOD MVVM框架,让WinForms焕发新春

    ,由于是国人作品,其设计风格和文档友好度对国人而言更胜一筹,因此也将它推荐到公司采用,其中推荐都理由就是它非常优秀MVVM功能,面向数据而不是面向DOM细节相比jQuery等更加节省代码,更符合后端程序员胃口...这样,视图上做简单数据属性设置和写少量code behind绑定代码,一个具有双向绑定功能程序就好了。...单击属性浏览器数据控件LinkProperty 属性旁边“…”按钮,会弹出下面的“数据控件属性选择器”窗体: ?...本例,我们用户视图模型功能也很简单,就是提供视图需要用户列表和响应视图增加,修改,删除用户命令,详细代码如下 public class SubmitedUsersViewModel...MVVM模式总结 通过运行此示例,相信你已经体验了MVVM一些特点,但可能难以表述贴切,正好跟几个WPF资深专家交流后,他们总结出了MVVM几个核心特点(卖点): 1,视图逻辑(视图模型)和视图

    3.8K60

    前端跨平台数据模型优化实践

    作者:zawaliang  腾讯TEG前端开发工程师 |导语  重逻辑投资并购业务前端开发,随着业务平台扩张,以及团队成员增长,如何能更高效提升研发效能及规范数据管理,以达到降本提效?...01 背景 伴随着业务发展,很多时候我们需要将前期Web业务扩张到App、H5等平台上;常规做法,我们一般会基于平台去建不同前端开发仓库,来实现业务目标; 基于MVVM设计模式前端架构,随着业务复杂度增加...03 前端架构优化 私有NPM仓库 如上图,基于这种MVVM架构开发模式,我们发现上面说业务成本其实很大部分是花在了Model层我们架构,Model层是一种与框架无关设计,只负责数据相关处理...仓库不好,是用方式不太对; 跨平台收拢 回归需求本身,我们希望降本提效,不应该人为制造那么多分裂;跨平台核心问题就是视图差异,其他很多部分在底层上是可以复用,架构设计上应该更简单一点; 我们把原来分散前端仓库整合成了一个仓库...数据异常上报&快照 上面提到,前端项目的稳定性很多时候决定于后端API输出类型稳定性。不断迭代过程,可能会出现API改动受到影响而没有知会前端情况,造成前端报错用户侧使用异常。

    79720

    精选Android中高级面试题:性能优化,JNI,设计模式

    参考回答:Java 优点是跨平台,但也因为其跨平台特性导致其本地交互能力不够强大,一些和操作系统相关特性 Java 无法完成,于是 Java 提供 JNI 专门用于和本地代码交互,通过 JNI...,用户可以调用 C、C++ 编写本地代码 NDK 是 Android 所提供一个工具集合,通过 NDK 可以 Android 更加方便地通过 JNI 访问本地代码,其优点在于: 提高代码安全性...2、谈谈 MVC、MVP 和 MVVM,好在哪里,不好在哪里 ?...android 无法做到彻底分离,但在代码逻辑层面一定要分清业务逻辑被放置 model 层,能够更好复用和修改增加业务。...对于偏向展示型 app,绝大多数业务逻辑都在后端,app 主要功能就是展示数据,交互等,建议使用 mvvm。 对于工具类或者需要写很多业务逻辑 app,使用 mvp 或者 mvvm 都可。

    2.7K30

    实用正面哲学

    组织演示逻辑需求已让位于许多在屏幕上显示整个应用程序流行模式,例如模型视图控制器(MVC,即"数据源、演示代码、逻辑")和模型视图模型 (MVVM)。 旁白:前端模块应该是"哑巴"。...没事它完全特定于"动态模板引擎"(如反应)工作原理,球体之外没有意义。如果你刚刚了解了水化,或者大多数任何其他类似反应概念,那么想想它可能是深奥。...反应只是将 HTML 以特定方式浏览器抛入其中一种花哨方式,具体取决于动态数据。Vue、角和斯维尔也做了同样事情, 但方式与反应略有不同。...Svelte 斯维尔很有趣:让我们尽快揭开它神秘面纱。当 Svelte 检测到 HTML 显示动态数据变化时,它实际上会根据 DOM 数据存在位置对 HTML 进行手术更改。...首先,存在合理违约。浏览器用户代理样式大多数情况下是perfectly accessible and appropriate.

    38210

    再见Xamarin,微软官宣跨平台 UI 框架 MAUI

    每个平台和 UI 控件本机功能都可以通过一个简单平台 API 触手可及,您可以提供不妥协用户体验同时共享比以前更多代码。...最后,您将始终可以访问本机底层操作系统 API,并且通过特定于平台集成将比以往更加轻松。 不同平台下,您可以添加特定操作系统代码文件并访问本机API。...它能做到: 一个针对多个平台和设备项目 一个位置来管理字体和图像等资源 多目标组织您特定于平台代码 只需要掌握一种构建客户端应用程序方法:MAUI,那么所有平台都在您控制范围之内。...MAUI将在所有这些版本可用,并支持现有的MVVM和XAML模式以及将来功能,例如使用C#甚至是Blazor模型视图更新(MVU)。...MVVM Model-View-ViewModel(MVVM)和 XAML 是 .NET 开发人员数十年来主要模式和实践,它们是MAUI一流功能,这将继续发展,以帮助您高效地构建和维护生产应用程序

    12K20
    领券