7

我拥有一个 Play 2.1 应用程序。

最初,我使用 Play 2.1 中的默认模板机制,直到我 .. 学习了 AngularJS。

现在,我显然希望我的客户端是一个 AngularJS 应用程序。

但是,在网上冲浪时,我发现没有明确的方法来实现它:

  1. 让 Play 表现为一个简单的 RESTful 应用程序(删除view文件夹)并创建一个完全不同的项目来构建视图(由 grunt.js 初始化的 AngularJS 应用程序)。
    优点:可能不那么混乱,前端和后端团队可以轻松地分开工作。缺点:AngularJS 应用程序需要另一个 HTTP 服务器。

  2. 尝试将 AngularJS 应用程序与传统 Play 的工作流程完全集成。
    缺点:对于像 AngularJS 这样相当复杂的框架,它会导致模板管理的混乱,例如:scala.html (for Play) / tpl.html (for Angular) ... => 混乱。

  3. 在 play 项目中创建一个自定义文件夹,但与 Play 脚手架创建的初始文件夹不同。例如,让我们称之为myangularview而不是传统view的。然后,将 grunt.js 生成的静态内容发布到 Play 的public文件夹中,以便通过 Play 的路由从浏览器访问。
    优点:组件之间的 SRP 仍然相当受尊重,无需像 1 中那样为客户端使用另一个轻量级 HTTP 服务器。

我指出了我自己对优点和缺点的看法。

什么是实现 Play 与 Angular 结合的好方法?

4

2 回答 2

3

是的,我正在回答我自己的问题:)

我遇到了这种做法:http: //jeff.konowit.ch/posts/yeoman-rails-angular/

导轨??无论框架是什么,需求都是一样的。

它提倡 API(后端)和前端(在这种情况下对后端服务器进行 AJAX 调用)之间的真正分离。

因此,我学到的是:

  • 在开发阶段,开发人员将使用两个服务器:两个不同端口上的 localhost。
  • 在生产阶段,前端元素将被包含在整个后端中(本文将处理一个 kindpublic文件夹,旨在提供静态内容:HTML、角度模板(例如)、CSS 等......优势?= > 处理一个唯一的服务服务器的 API 展示以及 UI 的静态资产。

有了这个组织,像 Yeoman 这样的工具可以为开发人员带来一些非常棒的方便的东西,例如:livereload功能。:):)

当然,在开发阶段,我们最终会得到两个不同的域(例如 localhost:3000 和 localhost:9000),这会导致传统 ajax 请求出现问题。然后,正如文章指出的那样,代理可能真的很有用。

我真的觉得整个练习非常优雅和愉快。

于 2013-09-22T20:06:01.513 回答
1

几天前在播放邮件列表上有一个关于前端堆栈/解决方案的有趣讨论,可能对你有用,似乎有很多人使用角度:https ://groups.google.com/forum/# !searchin/play-framework/frontend/play-framework/IKdOowvRH0s/tQsD9zp--5oJ

于 2013-09-19T13:52:18.950 回答