在 Play 2.x 中,子项目是构建模块化应用程序的方式,看起来很棒。
现在,进入本质,一些问题变得清晰:
1) Cyclical dependencies not possible (A can depend on B, but B cannot depend on A)
2) A child project cannot access a parent project
3) Routing and Assets are isolated to each sub project
就我而言,我想按如下方式构建应用程序:
Main
Modules
-> Core
-> Model
-> Common
-> View
-> Desktop
-> Mobile
-> Controller
-> admin
-> account
-> public
现在,假设管理员控制器收到一个移动请求,但用户尚未登录。好的,我们需要拉入View > Mobile > views > login > index.scala.html
由于控制器子项目依赖于视图(反之亦然),因此视图将无法访问控制器路由,这意味着类似的东西@form(action = admin.routes.auth)
将不起作用。
可以废弃视图子项目并在每个单独的控制器子项目下存储视图,但这看起来像是大量模板代码重复的秘诀。
基本的核心、模型、主要(资产、控制器、视图)子项目设置一切都很好,但是当您需要支持移动和桌面界面以及 crud 和正面视图时,它会变得更加复杂。
当您看到由单个路由文件产生的巨大构建时间时,子项目开始看起来像圣杯。
实施是另一回事。