如何在play框架中为不同的视图页面指定不同的JS文件

How to specify, different JS file for different view page in play framework?

本文关键字:文件 JS 视图 框架 play      更新时间:2023-09-26

我们如何在play框架中为不同的视图页面定义不同的javascript文件??

一种方法是=>

@main(title, """
@*JS CODE*@
"""{
//Template Codes
}

在主模板中使用=>

@(title,stringJS){
<script>
@Html(stringJS)
</script>
}

但是,如果JS代码不是在所有页面中使用,而是在选定的少数页面中使用,开发人员不能在每个相对视图页面中复制JS代码。在我的例子中,所有的javascript都加载在页脚,这是一个单独的模板。

我们如何解决这个问题?

任何帮助都是感激的,谢谢!

通用模板用例 doc, section: 'moreScripts and moreStyles equivalents'

简而言之,它是这样工作的(view)

@moreScripts = {
    <script type="text/javascript">alert("hello !");</script>
}
@moreStyles = {
    <style>background: pink;</style>
}

@main("Title", moreScripts, moreStyles){
   Html content here ...
}

main.scala.html以:

开头
@(title: String, moreScripts: Html = Html(""), moreStyles: Html = Html(""))(content: Html)
<!DOCTYPE html>
<html>
    <head>
        <title>@title</title>
        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
        @moreStyles
        <script src="@routes.Assets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
        @moreScripts
    </head>
    <body>
        @content
    </body>
</html>

我想出了我的解决方案,感谢这篇有帮助的帖子,我所做的是:

@main(title, """
@*NO JS CODE, but declaration itself*@
<script src="/assets/javascripts/libs/main.js" type="text/javascript"></script>
<script src="@routes.Assets.at("javascripts/libs/main.js")" type="text/javascript"></script>//Doing this gives out errors, so I had to hardcode the "src" location
"""{
//Template Codes
}

如果有更有效的方法来解决这个问题,欢迎提出意见,因为硬编码src不是处理这个问题的有效方法,我认为