【问题标题】:Under an MVC framework, which directory structure would be expected by other developers?在 MVC 框架下,其他开发人员会期望哪种目录结构?
【发布时间】:2010-09-15 18:10:38
【问题描述】:

通常,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。

【问题讨论】:

    标签: model-view-controller frameworks


    【解决方案1】:

    2 是一个好的开始。您应该考虑有一个通用文件夹,您可以在其中存储应用程序套件中所有应用程序使用的任何通用模型、视图和实用程序。

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

    【讨论】:

    • 这绝对是最实用的解决方案。
    【解决方案2】:

    假设您想要对应用程序进行一些分离,那么 2) 似乎是您的最佳选择。您还可以在“/app#”级别有一个“/common”文件夹,用于跨所有应用程序共享资源……例如共享实用程序类或其他。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如果您的应用共享数据,那么(对我而言)将模型分组在一起可能是有意义的。

        但是,对于视图和控制器,将它们分开可能更有意义,因为我假设它们具有独立的业务逻辑和表示。

        此外,如果您的应用单独保存在版本控制中(您正在使用版本控制,对吗?:),这会使第一个或第三个选项难以实施。

        所以考虑到所有因素,我可能会在顶层分离应用程序,就像你的第二个例子一样。

        【讨论】:

          猜你喜欢
          • 2020-11-05
          • 2011-03-30
          • 1970-01-01
          • 2014-03-27
          • 1970-01-01
          • 1970-01-01
          • 2011-05-03
          • 2011-11-21
          相关资源
          最近更新 更多