是否有任何大型多模塊播放框架(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