是否有任何大型多模块播放框架(Scala)应用程序的示例。例如,使用多个视觉主题并根据主题提供不同的内容。为这些应用程序组织代码的最佳方式是什么?大型多模块播放框架应用程序
回答
我觉得有你的问题的两个不同点:
- 如何拆分大型游乐应用到更小,更易于管理的模块?
- 如何为同一动作动态选择不同的视图(即有多个主题呈现相同的数据)?
第一点很简单,虽然在联机文档中记录不清楚(AFAIK)。一场戏!模块像普通的播放应用程序一样构建,但没有任何配置文件。所以基本上,删除任何应用程序的conf/
文件夹,将其发布到您喜欢的存储库中,然后您就可以将该模块用作另一个应用程序/模块中的依赖项。
第二点是有点棘手。由于播放模板是静态编译的,因此在运行时更改视图是不受支持的,您必须提出自己的解决方案。
第一个解决方案是使用一个不同的模板引擎,一个在运行时解释模板的解释引擎this blog post解释了如何在play 2.X应用程序中使用该scalate模板引擎。
另一种解决方案是使用运行时反射在运行时选择正确的模板,但代价是失去了一些编译时间保护(如果所需模板不存在,则会产生运行时错误,并且而不是像普通应用程序那样的编译时错误)。
第三种解决方案是从你的控制器抽象模板和路由(使它们成为特征或抽象类)在父模块中,然后为每个不同的主题创建一个子应用程序,每个子应用程序只需要实现摘要控制器通过提供所需的模板和路线:
// in the parent module
trait AbsCtrl extends Controller {
val indexTemplate : (Foo, Bar) => Html // a template is like a function
// from some models to Html
val errorRoute : Call
def index() = Action {
request =>
val foo = Foo()
val bar = Bar()
if(someCondition) Ok(indexTemplate(foo, bar))
else Redirect(errorRoute)
}
}
// in the child module
object Ctrl extends AbsCtrl {
// assuming you have a scala template named index that take the right arguments
override val indexTemplate = views.html.index.render
override val errorRoute = routes.Application.error()
}
该溶液是有点更复杂,它需要具有每主题一个应用程序,它可能无法在某些情况下可以接受的,但它保留了编译时间的安全性,所以它可能比前一个更好。
最后,你可以选择你的系统在两个不同的层分裂:
- 业务层在您的播放应用,用一个简单的REST API
- 渲染层,面向最终用户,即“将使用的业务API和照顾的具体主题渲染
您可以使用另一种技术来编写一个后,例如,一个简单的node.js服务器,可以让你利用一个JavaScript基于模板发动机。
我们在当前自行开发的应用程序中具有此功能。我会*爱*把所有的代码翻出来,进入更像游戏这样的“主流”。我想知道是否有scala。元的方式来为各种网站做代码生成,并允许domain1.com有一个特定的视图/模板覆盖base.com的配置,并强制儿童/父母模板的签名是类型安全的/等等。这个评论问题已经过了几年的评论,你有没有看到更好的解决方案? – ericpeters
- 1. 使用播放框架的模块化Web应用程序
- 2. 播放框架应用程序安装
- 3. 连接Android应用程序以播放框架应用程序
- 4. 在产品模式下调试播放框架应用程序
- 5. DuplicateMemberException播放框架mongodb模块
- 6. Heroku安装播放框架模块
- 7. 大型资产在播放框架2.1
- 8. 如何设计一个多模块播放应用程序
- 9. 播放框架模型单元测试
- 10. 使用Phalcon PHP框架嵌套的多模块应用程序?
- 11. 播放2框架导入播放2模块
- 12. 播放框架响应大小限制
- 13. Zend框架会话管理多模块应用程序
- 14. 泛型和播放框架
- 15. Scala播放框架Web应用程序托管流程
- 16. 玩框架:运行多模块应用程序的单独模块
- 17. 如何处理GWT上的大型多模块应用程序
- 18. 多个表共享播放框架中的一个模型类
- 19. 播放框架MVC邮件程序
- 20. 开始播放框架应用程序后退出控制台
- 21. 在GAE上制作应用程序的播放框架
- 22. 无法启动播放框架应用程序
- 23. 播放框架2.5应用程序崩溃
- 24. 播放框架-2.3.10应用程序启动问题
- 25. LinkageError与部署的播放框架1.2.5应用程序
- 26. 带有播放框架的网络应用程序
- 27. 在播放框架应用程序conf文件中定义键
- 28. 无法访问应用程序在播放框架
- 29. 在播放框架应用程序上设置新的文物
- 30. 在OpenShift上播放框架应用程序
你确定你的意思是不同的主题?通常主题的目标是让它们与内容分离。 – Peanut