播放框架和 javascript 资产路由器
Play framework and javascript Assets router
我在 Scala 中使用 Play 2 框架。
我想在我的 Javascript 中使用 @routes.Assets.at(...)
来获取我的资产的路径。但是框架不会编译assets
目录下的内容。
可能吗?或者其他选择?
我的解决方案:
# in the controller, Scala code
def jsRouterGen = Action {
Ok(
Routes.javascriptRouter("jsRouter")(
routes.javascript.Assets.at // IntelliJ will tell you this is wrong, but it you are right :)
)
).as("text/javascript")
}
# in html template
# add in <head>
<script src='@routes.Application.jsRouterGen'></script>
<!-- other js that needs this router come after -->
# in your js
jsRouter.controllers.Assets.at('/use/it/like/in/html/template');
注意两对:
- jsRouterGen: 这个定义了js路由代码
- jsRouter: 这是你将在js代码中使用的路由器的名称
根据需要更改它们,但要确保它们匹配。
JavaScript 放在 assets
目录下的文件没有被编译,但是查看其中包含它是!所以你可以在包含 JS 之前声明全局 JS var,而不是在 JS 中使用这个 var,比如:
<script>
var myPathToSomeAction = '@routes.MyController.myAction()';
var someImgPath = '@routes.Assets.at("images/some-img.jpg")';
</script>
<script src='@routes.Assets.at("js/myscript.js")'></script>
因此在您的 JS 中您可以使用它,例如:
var imgMarkup = '<img src="' + someImgPath + '" alt="" />';
我在 Scala 中使用 Play 2 框架。
我想在我的 Javascript 中使用 @routes.Assets.at(...)
来获取我的资产的路径。但是框架不会编译assets
目录下的内容。
可能吗?或者其他选择?
我的解决方案:
# in the controller, Scala code
def jsRouterGen = Action {
Ok(
Routes.javascriptRouter("jsRouter")(
routes.javascript.Assets.at // IntelliJ will tell you this is wrong, but it you are right :)
)
).as("text/javascript")
}
# in html template
# add in <head>
<script src='@routes.Application.jsRouterGen'></script>
<!-- other js that needs this router come after -->
# in your js
jsRouter.controllers.Assets.at('/use/it/like/in/html/template');
注意两对:
- jsRouterGen: 这个定义了js路由代码
- jsRouter: 这是你将在js代码中使用的路由器的名称
根据需要更改它们,但要确保它们匹配。
JavaScript 放在 assets
目录下的文件没有被编译,但是查看其中包含它是!所以你可以在包含 JS 之前声明全局 JS var,而不是在 JS 中使用这个 var,比如:
<script>
var myPathToSomeAction = '@routes.MyController.myAction()';
var someImgPath = '@routes.Assets.at("images/some-img.jpg")';
</script>
<script src='@routes.Assets.at("js/myscript.js")'></script>
因此在您的 JS 中您可以使用它,例如:
var imgMarkup = '<img src="' + someImgPath + '" alt="" />';