【发布时间】:2019-09-29 22:36:43
【问题描述】:
我已经在一个移动应用程序上工作了一个星期,用于个人教育和增强。我有一些 WPF 和 MVVM 经验,我没有移动开发经验。
这个想法是做一个跨平台的应用程序,同时测试一些编码理念:
- 反应式编程 (ReactiveUI)
- 垂直切片,如果可能(blog 1,blog 2)
我打算使用以下组件:
- Prism.Unity.Forms :似乎提供了应用程序结构、ioc、导航,似乎被广泛使用,并且由一流的人完成
- ReactiveUI、ReactiveUI.XamForms、ReactiveUI.Fody :WhenAnyValue、ObservableAsPropertyAttribute、ReactiveAttribute (tutorial),不使用它们对我来说似乎是一个巨大的错失机会
我的 Visual Studio 的当前结构如下:
- Csproj
- 视图模型
- 创建ExercisePageViewModel
- 主页视图模型
- 查看次数
- 创建练习页
- 主页
- 视图模型
我管理了以下内容:
- 使用 Prism 的导航功能将 HomePage 设置为包含在 NavigationPage 中的初始页面。
- 在 XAML 中声明一个命名按钮,通过在代码中创建的 OneWay 绑定设置其 Command 属性,使用 ReactiveUI 功能(如教程中所示,使用 WhenActivated 方法)
- 使用 Prism 导航导航到第二页 (CreateExercisePage)
一个问题是,尽管我看过一些关于垂直切片的文章,但大部分都是关于 Web 应用程序的。
所以问题是:垂直切片是否适用于移动应用程序?
我想通过使用垂直切片来重组我的项目,但是在查找有关 Xamarin Forms 的文章时遇到了麻烦,我感到不安。
编辑:我对垂直切片概念的理解是,您应该将与功能相关的代码分组在同一个物理空间(文件夹)中。通过这样做,它为开发人员提供了有关这些文件内聚性的重要提示。
鉴于移动应用程序是由屏幕组成的,我假设按屏幕对代码进行分组,而不管它们的类型(表示、逻辑、持久性)如何。
重写应用程序会得到以下csproj,然后:
- Csproj
- 屏幕
- 首页
- 主页
- 主页视图模型
- 创建练习
- 创建练习页
- 创建ExercisePageViewModel
- 首页
- 屏幕
添加新屏幕意味着将新文件夹添加到“屏幕”文件夹,从而降低修改现有文件/逻辑的风险。
【问题讨论】:
-
那么你对这个“垂直切片”的定义是什么,这样大家就清楚你真正想要什么了
-
个人观点:将属于同一事物的东西归为一类,但不要强求。视图和视图模型自然属于一起,但是
UserManagement服务不属于LoginPage...
标签: c# xamarin.forms architecture prism reactiveui