簡體   English   中英

Play Framework 2.0中的動態模板

[英]Dynamic templates in Play Framework 2.0

Play 1.0TemplateLoader用於在運行時生成模板。

Play 2.0有動態加載模板的解決方案嗎? 或者我可以以某種方式將其轉換為使用Eval scala代碼?

例如:我想在數據庫中存儲一些模板,以便某些用戶可以編輯它們。

Play 2.0已經將模板編譯為對象方法,因此您不必“動態加載”它們!

考慮這個名為app/views/test.scala.html簡單模板。

@(num:Long) 
Your number is @num

它成為一個名為testviews.html的Scala方法。 使用以下代碼評估它:

val msg : String = views.html.test(23).toString()

您不必僅使用html視圖。 要將模板與字符串一起使用,請使用play.api.templates.Txt派生類。 這是一個名為app/views/quick.scala.txt的模板:

@(id:Long)Your id is @id

它成為一個方法views.txt.quick並使用:

val msg2 : String = views.txt.quick(32).body

您可以在play.api.templates的文檔中找到更多信息。

似乎相關代碼位於Play-2.0目錄下的framework/src/play/src/main/scala/system/ApplicationProvider.scala中,特別是ReloadableApplication類。 我不確定這種動態編譯如何適合你,因為你不想在請求模板時這樣做(它很慢)。 這意味着存儲在數據庫中並沒有多大意義:您不希望存儲模板源代碼,而是存儲已編譯的模板對象。

為了論證,如果您只是將模板寫入app/views目錄,您可以讓Play在閑暇時編譯它們。 但是,請注意,因為它們可能無法在生產系統上編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM