这个地方很薄弱,浏览器http://localhost:9000/index.html ->conf/routes ->app/controllers/application.scala ->def index = Action ->{Ok(views.html.index("Hello World!"))}-> 返回正文的内容纯文本或者HTML格式.
这一块应该也是这么理解的,语言大多都差不多的构造.(好像是这样的)
自己研究了一下才发现默认文件下的index.scala.html是内容显示页面main.scala.html是layouts.既然不懂那就查资料
play模板在HTML基础上直接基于Scala语言,模板文件通常放在view目录下,文件以".scala.html"双扩展名.每个模板文件都是一个Scala代码,都需要通过Scala编译器检查类型和语法,并编译成.class可执行的JVM二进制文件.
编译时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文件:
@(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数据类型得看一下了.
这里的注释代码解释一下写法为:
@*我是注释*@
既然以@为Scala代码起始,那么@**@为注释很好记.
结合上面的index.scala.html来看Application.scala中的Action
def index = Action { Ok(views.html.index("Hello World!")) }
index里面接收的是一个参数,试试接收多个参数index.scalaApplication.scalamain.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代码.
新闻热点
疑难解答