模板技術之Twirl-構建你想要的一切

上篇文章介紹了國內的模板技術Beetl,今天介紹下Twril模板技術,該技術被用於在ODL-Cardon版本及之後的YANG模板代碼生成中。Twirl是play默認的模板引擎,用Scala編寫。模板會被編譯成Scala函數。從所周知ODL採用的JAVA語言,想使Twril可用,還需要最終編譯成JAVA語言的JAR包。

看示例:

模板技術之Twirl-構建你想要的一切

項目目錄

模板文件hello.scal.txt默認必須放置在twirl目錄下,其內容如下:

模板技術之Twirl-構建你想要的一切

twril模板

具體的模板語法,這裡不作詳細介紹,從上面模板內容分析:

@(customer:Customer,orders:List[Order]):表示該模板接受兩個參數,分別是Customer對象和Order列表

@customer.name :表示獲取傳入customer實例的name屬性

上面說過,該模板使用scala編寫,需要編譯

com.jakewharton.twirl

twirl-maven-plugin

1.0.4

twirl-to-scala-first

generate-sources

compile

由於我們使用的是JAVA方法,所以還需要編譯成class

net.alchim31.maven

scala-maven-plugin

3.2.2

scala-compile-second

process-resources

add-source

compile

這樣執行編譯後,在對應目錄下,則會生成class文件

模板技術之Twirl-構建你想要的一切

hello.class

到這一部,則可以直接使用hello類進行模板操作,測試用例如下:

模板技術之Twirl-構建你想要的一切

測試用例

核心方法為hello.render,這樣則會按模板定義規範輸出對應的內容

模板技術之Twirl-構建你想要的一切

輸出

可能需要的依賴:

com.typesafe.play

twirl-api_2.11

1.1.1

其餘可參考:https://www.playframework.com/documentation/2.6.x/ScalaTemplates

模板技術之Twirl-構建你想要的一切


分享到:


相關文章: