通常,MVC框架结构的结构类似于:
/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。
答案 0 :(得分:6)
2是一个好的开始。您应该考虑使用一个公共文件夹,您可以在其中存储应用程序套件中所有应用程序使用的任何常见模型,视图和工具。
/app1
/models
/views
/controllers
/utils
/app2
/models
/views
/controllers
/utils
/common
/models
/views
/utils
答案 1 :(得分:5)
似乎2)将是您最好的选择,假设您想要一些应用程序分离。您还可以在“/ app#”级别拥有一个“/ common”文件夹,用于所有应用程序中的共享资源...如共享实用程序类或其他任何内容。
答案 2 :(得分:1)
如果您的应用分享数据,那么(对我而言)将模型分组在一起是有意义的。
但是,对于视图和控制器,将它们分开可能更有意义,因为我假设它们具有单独的业务逻辑和演示文稿。
此外,如果您的应用程序在版本控制中单独保存(您正在使用版本控制,对吗?:),这使得第一个或第三个选项难以实现。
所以考虑到所有事情,我可能会将应用程序分开到顶层,就像你的第二个例子一样。
答案 3 :(得分:1)
我通常按功能对代码进行分组,因此在您的情况下,按应用程序分组对我来说最有意义。原因是,如果我想处理特定功能,我不应该搜索三个单独的文件夹来查找我需要的组件。如果按照高级功能进行分组,您就会知道所需要的一切。