Model view controller 在MVC框架下,其他开发人员希望使用哪种目录结构?

Model view controller 在MVC框架下,其他开发人员希望使用哪种目录结构?,model-view-controller,frameworks,Model View Controller,Frameworks,通常,MVC Framework的结构类似于: /models /views /controllers /utils 然而,在web应用程序套件中,我认为将所有模型、视图和控制器聚集在一起可能不是最好的清晰方法,除非我将系统视为一个应用程序而不是一个应用程序套件。然而,有些东西将每个“应用程序”联系在一起,比如用户和用户角色的概念 因此,我有三种可能的解决方案: (1) 做我不想做的事,把每个模型、视图和控制器都放在一起,不管它属于哪个应用程序。这是将套件视为单个应用程序,因为它们由几个公共线

通常,MVC Framework的结构类似于:

/models
/views
/controllers
/utils
然而,在web应用程序套件中,我认为将所有模型、视图和控制器聚集在一起可能不是最好的清晰方法,除非我将系统视为一个应用程序而不是一个应用程序套件。然而,有些东西将每个“应用程序”联系在一起,比如用户和用户角色的概念

因此,我有三种可能的解决方案:

(1) 做我不想做的事,把每个模型、视图和控制器都放在一起,不管它属于哪个应用程序。这是将套件视为单个应用程序,因为它们由几个公共线程(包括用户)绑定在一起

(2) 按应用程序对代码进行分组

/app1
    /models
    /views
    /controllers
    /utils
/app2
    /models
    /views
    /controllers
    /utils
(3) 按类型对代码进行分组,以便在所有应用程序之间共享实用程序代码

/models
    /app1
    /app2
/views
    /app1
    /app2
/controllers
    /app1
    /app2
/utils

有没有我错过的选择?对于未来的开发者来说,什么是最合理的方案?我个人更喜欢2和3,但也许大多数人会期望1。

如果你的应用程序共享数据,那么(对我来说)将模型分组在一起是有意义的

然而,对于视图和控制器来说,将它们分开可能更有意义,因为我假设它们有单独的业务逻辑和表示

此外,如果您的应用程序单独保存在版本控制中(您使用的是版本控制,对吗?:),则第一个或第三个选项很难实现


因此,综合考虑,我可能会在顶层分离应用程序,如您的第二个示例。

我通常按功能对代码进行分组,因此在您的情况下,按应用程序分组对我来说最有意义。原因是,如果我想处理某个特定的功能,我不必在三个单独的文件夹中搜索我需要的组件。如果您按高级功能分组,您就知道您需要的一切都在一起。

如果您希望将应用程序分离,那么2)似乎是您的最佳选择。您还可以在“/app#”级别拥有一个“/common”文件夹,用于跨所有应用程序共享资源。。。就像一个共享的实用程序类或任何东西。

2是一个好的开始。您应该考虑使用一个公用文件夹,在其中可以存储应用程序套件中所有应用程序使用的任何常见模型、视图和UTI.
/app1
   /models
   /views
   /controllers
   /utils
/app2
   /models
   /views
   /controllers
   /utils
/common
   /models
   /views
   /utils

这看起来绝对是最实际的解决方案。