gpt4 book ai didi

playframework - Play Framework 2.1.0 和 AngularJS 集成

转载 作者:行者123 更新时间:2023-12-04 03:52:34 26 4
gpt4 key购买 nike

1) 我想将 AngularJS 与 Play Framework 2.1.0 一起使用,Play 将 JSON 内容作为 RESTful 服务器后端提供服务,因为从 1.x 版迁移到 2.x 版后,它似乎无法为静态 HTML 提供服务使用以下方法从公共(public)文件夹中获取内容:

路由.conf:

GET     /                           staticFile:/public/index.html

这会导致引发 Controller 方法调用预期异常。

我发现在 Play 2.1.0 中有效的一种方法是在 Controller 中编写一个 Action 方法,如下所示:
public static Result index() {
return ok(Play.application().getFile("public/index.html"));
}

这是最好的方法还是有更优雅和更实用的解决方案?

2) 在这种使用客户端 JavaScript 框架而不是基于 Scala 的模板引擎的方法中是否有任何潜在的缺点或“陷阱”?

任何指针将不胜感激。

最佳答案

使用 Angular 路由时的一种方法是使用 Play 为您的索引页面提供服务,并将部分作为来自公共(public)目录的静态资源提供服务。 routes文件将具有以下内容:

GET         /                               controllers.Application.index
GET /assets/*file controllers.Assets.at(path="/public", file)

Play Controller 看起来像:
  def index = Action {
Ok(views.html.index())
}

这允许您使用 Plays 模板来进行资源导入(它也可以很好地与 WebJars 一起使用)。例如在您的 index.scala.html :
 <script src="@routes.Assets.at("javascripts/app.js")" type="text/javascript"></script>
<script type='text/javascript' src='@routes.WebJarAssets.at(WebJarAssets.locate("angular.min.js"))'></script>

然后您可以将所有部分放在公共(public)目录中并将它们作为静态文件提供,这些可以从您的 app.js 中引用,如下所示:
      when('/partial-1', {templateUrl: '/assets/partials/partial-1.html',   controller: CtrlPartial1}).

关于playframework - Play Framework 2.1.0 和 AngularJS 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15775004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com