c# - Xamarin Forms:使用 Prism 和/或 ReactiveUI,是否可以实现垂直切片?
问题描述
我已经在一个移动应用程序上工作了一周,用于个人教育和增强。我有一些 WPF 和 MVVM 经验,我没有移动开发经验。
这个想法是制作一个跨平台的应用程序,同时测试一些编码理念:
- 反应式编程 ( ReactiveUI )
- 垂直切片,如果可能的话(博客 1,博客 2)
我计划使用以下组件:
- Prism.Unity.Forms :似乎提供了应用程序结构,ioc,导航,似乎被广泛使用,并且由一流的人完成
- ReactiveUI、ReactiveUI.XamForms、ReactiveUI.Fody :WhenAnyValue、ObservableAsPropertyAttribute、ReactiveAttribute(教程),不使用它们对我来说似乎是一个巨大的错失机会
我的 Visual Studio 的当前结构如下:
- Csproj
- 视图模型
- 创建ExercisePageViewModel
- 主页视图模型
- 意见
- 创建练习页
- 主页
- 视图模型
我管理了以下内容:
- 通过使用 Prism 的导航功能,将 HomePage 设置为包含在 NavigationPage 中的初始页面。
- 在 XAML 中声明一个命名按钮,通过在代码中创建的 OneWay 绑定设置其 Command 属性,使用 ReactiveUI 功能(如教程中所示,使用 WhenActivated 方法)
- 使用 Prism 导航导航到第二页 (CreateExercisePage)
一个问题是,尽管我看过一些关于垂直切片的文章,但大部分都是关于 Web 应用程序的。
那么问题来了:垂直切片适用于移动应用吗?
我想通过使用垂直切片来重组我的项目,但是很难找到有关 Xamarin Forms 的文章,我感到不安。
编辑:我对垂直切片概念的理解是,您应该将与功能相关的代码分组在同一个物理空间(文件夹)中。通过这样做,它为开发人员提供了有关这些文件内聚性的巨大提示。
鉴于移动应用程序是由屏幕组成的,我假设按屏幕对代码进行分组,而不管它们的类型(表示、逻辑、持久性)如何都是有意义的。
重写应用程序将给出以下 csproj,然后:
- Csproj
- 屏幕
- 家
- 主页
- 主页视图模型
- 创建练习
- 创建练习页
- 创建ExercisePageViewModel
- 家
- 屏幕
添加新屏幕意味着将新文件夹添加到“屏幕”文件夹,从而降低修改现有文件/逻辑的风险。
解决方案
垂直切片有点像我们在 Xamarin.Forms 上使用的 MVVM: https ://docs.microsoft.com/en-us/xamarin/xamarin-forms/enterprise-application-patterns/mvvm 视图是 UI 层,视图模型帮助您处理逻辑代码,模型代表您的数据库数据。
例如,用户单击视图层上的按钮以触发视图模型中的命令。然后此命令可以将新产品添加到该视图模型的 List 属性。由于此列表属性已更改,它将通知 UI 响应此操作。
此外,您的第一个架构更合适:
- 视图模型
- 创建ExercisePageViewModel
- 主页视图模型
- 意见
- 创建练习页
- 主页
使您的页面由您的视图模型分隔。
推荐阅读
- javascript - 如何在 discord.js 中邀请某人加入公会?
- xcode - 如何修复 SwiftUI tvOS ScrollView 跳跃/抖动/片状/错误/故障行为?
- php - GoDaddy 上的 php_com_dotnet 扩展?
- typescript - 基于包的打字稿条件类型
- reactjs - 无法通过 Set-Cookie 标头设置 cookie 它被阻止,因为它具有“SameSite=Lax”
- css - 使用 rvest 使用加载更多按钮抓取网站
- docker - Mac VS Code Docker X11 转发
- javascript - 使用把手#each 发送按摩“成功”或“失败”,但我的代码总是发送成功消息,即使它是错误的
- javascript - 当数组的总和大于特定数字时,删除数组的最后一个元素
- entity-framework - SaveChanges 上的 EF Core 不断向第二个表添加记录