這個地方很薄弱,瀏覽器 http://localhost:9000/index.html -> conf/routes -> app/controllers/Application.scala -> def index = Action -> {Ok(views.html.index("Hello World!"))} -> 返回正文的內容純文本或者HTML格式.javascript
這一塊應該也是這麼理解的,語言大多都差很少的構造.(好像是這樣的)css
本身研究了一下才發現默認文件下的 index.scala.html 是內容顯示頁面 main.scala.html 是layouts.既然不懂那就查資料html
play模板在HTML基礎上直接基於Scala語言,模板文件一般放在 view目錄下 ,文件以".scala.html"雙擴展名.每一個模板文件都是一個Scala代碼,都須要經過Scala編譯器檢查類型和語法,並編譯成.class可執行的JVM二進制文件.java
編譯時Play首相會將.scala.html的Play模板文件自動生成爲.scala的源代碼文件,如 /app/views/index.scala.html的模板文件將會生成/target/scala-2.9.1/src_managed/main/views/html/index.template.scala文件,該文件將會繼而被Scala編譯器編譯成index.class。瀏覽器
解析 index.scala.html 文件:app
@(message: String) @*模板入參,類型爲String類型,命名爲message*@ @*調用main.scala.html模板,傳入參數message*@ @main("Welcome to Play") { @*這裏調用了play中自帶的一個歡迎模板插入message*@ @play20.welcome(message) }
在play模板中@符號表明後面的代碼爲Scala代碼塊,由於.scala.html文件最終要編譯成Scala. index.scala.html 中的代碼塊把模板文件當成了一個對象,傳入的參數都聲明瞭類型.Java數據類型得看一下了.學習
這裏的註釋代碼解釋一下寫法爲:spa
@*我是註釋*@
既然以@爲Scala代碼起始,那麼 @**@ 爲註釋很好記.scala
結合上面的 index.scala.html 來看 Application.scala 中的 Action code
def index = Action { Ok(views.html.index("Hello World!")) }
index裏面接收的是一個參數,試試接收多個參數 index.scala Application.scala main.scala.html 三者之間該怎麼寫:
首先 Application.scala 中定義第二個參數
def index = Action { Ok(views.html.index("Your new application is ready.","我在哪裏")) }
接着在 index.scala.html 定義參數
@(message: String,exmple: String) @*這裏聲明的格式與Application中的格式一致*@ @*此處main中接收的格式也是2個*@ @main(message,exmple) { @*方法體裏面(也不知道這裏該用什麼專業的名稱,暫且叫方法體.)就是HTML頁面中顯示的內容*@ <p>學習筆記</p> <a href="">凡事不能夠</a> }
而後看 main.scala.html 中要如何調用
@(title: String,exmple: String)(content: Html) <!DOCTYPE html> <html> <head> <title>@title</title> <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")"> <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")"> <script src="@routes.Assets.at("javascripts/hello.js")" type="text/javascript"></script> </head> <body> @exmple @content </body> </html>
頭部的參數定義正確,參數能夠隨意顯示了.其中 @content 是 index.scala.html 文件中 @main(){...} 方法體裏面的HTML代碼.