javaTemplates-學習筆記四

應用的調用順序理解

這個地方很薄弱,瀏覽器 http://localhost:9000/index.html  ->  conf/routes  ->  app/controllers/Application.scala  ->  def index = Action  ->  {Ok(views.html.index("Hello World!"))} -> 返回正文的內容純文本或者HTML格式.javascript

這一塊應該也是這麼理解的,語言大多都差很少的構造.(好像是這樣的)css

理解view層

本身研究了一下才發現默認文件下的 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代碼.

相關文章
相關標籤/搜索