在我的游戏项目中,我将我的所有 javascript 和 css 链接到我的 main.scala.html 中。我还想为我的应用程序使用类似 JQuery mobile 的移动界面。一个项目可以有多个视图吗?我可以创建一个与 main 类似的包装器并将其用于移动 css/js 吗?
3 回答
你可以做任何你想做的事,玩!视图非常灵活。
事件如果我不确定完全理解你想要什么,我可以给你一些建议。
从视图加载脚本
您可以将视图的特定脚本加载到您的main.scala.html
.
main.scala.html
@(title: String, scripts: Html = Html(""))(content: Html)
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" media="screen" href='@routes.Assets.at("stylesheets/main.css")'>
@* By default, nothing but you can override from any view *@
@scripts
</head>
<body>
@content
</body>
</html>
anyview.scala.html
@(title: String)
@* Declare the script(s) you need for that view *@
@scripts = {
<script src='@routes.Assets.at("javascripts/my-specific-script.js")' type="text/javascript"></script>
}
@main(title, scripts) {
@* Some content *@
}
如果视图中不需要额外的脚本,则不要传递scripts
参数(它在 中具有默认的空值main.scala.html
)。
加载您需要的内容main.scala.html
通过传递参数(基于您的设备检测)。
main.scala.html
@if(someParameter.isMobileDevice()) {
<script src='@routes.Assets.at("javascripts/my-mobile-script.js")' type="text/javascript"></script>
}
那么响应式设计呢?
您的样式可以根据用于查看页面的设备进行调整。您可能不需要加载额外的东西。
最简单的方法是......只是检查:) 无论如何,是的,你可以拥有尽可能多layouts
的,没有限制。(根据文档术语,layout
是一个视图,它是其他视图的某种包装器 - 例如默认main.scala.html
文件)。
为了保持我以前总是将main.scala.html
布局移动到新创建的包中的顺序:app.views._layouts
. 我也在创建其他的......所以在你的观点中你可以很容易地使用:
@_layouts.main(params){
...
}
或者
@_layouts.mobile(params){
...
}
PS:正如 Alban 所写,也可以使用一种布局并向它们推送其他脚本。结合这两种技术,您可能可以做任何您需要的事情。
My2c
对于这种用例,我最好的猜测是使用正确的工具。实际上,您真正想要的是您的应用程序能够响应它的使用方式。也就是说,您需要响应性。所以炒作不是;-)。
此外,在服务器端,窗口缩小的情况将很难处理......简单地说,因为它们纯粹是客户端操作 :-/ 。所以视口在 1200 像素(真实)屏幕上是 320 像素宽。
但是,您确实可以使用传递给布局的特定参数来调整它们的行为,但这需要您使用浏览器提供的信息来管理服务器端的案例......
那么为什么不让浏览器为你做所有事情呢?
希望稳定的库会有所帮助,例如:
yepnopejs,它可以让您定义要加载的关于谓词的 js 文件(如320 < screen.width
)。
或者为了减少设备之间的重复代码或if-then-else,您可以将 yesnope 与responsejs一起使用,这将使您有机会以声明方式声明一些“响应式”行为(什么没有 JS KoOl 啊?),如下所示:
<a
href=hi-fi.png
data-min-width-320='<img src=lo-fi.png alt="image @ 320+">'
data-min-width-961='<img src=hi-fi.png alt="image @ 961+">'
>
text-only link @ <320px and no-js
</a>
或者
事实上,@biesior 和 @Alban 的答案都是正确且有帮助的。我最后的接触是使用在复合控制器中计算一次的隐式参数,从请求标头中提取信息(至少)。