我最近在一个纯Scala-Play应用程序中工作,后来又在一个纯粹的AngularJS应用程序中工作。我对这两者印象非常深刻,我想知道将两个框架结合在一起的最佳点是什么。由于这两个框架可以是互补的,但也可以在不同的区域重叠,例如MVC和页面路由,据我所知,这些是一些可能性:
单页设计,仅使用AngularJS MVC并使用Scala-Play作为"沉闷"服务层后端,没有整页刷新。
允许页面重新加载,每个页面重新加载成为不同的AngularJS根应用程序。这似乎很灵活,例如客户端不会为大型应用程序提供如此多的数据,而是针对不同的用例进行更好的分区。缺点是我需要不同的AngularJS MVC应用程序,而且我甚至不确定如何将其组织为项目。有这样的例子吗?
典型的服务器端Web App,使用Play MVC和AngularJS处理每个单独页面的UI模型。
我为这些类型的架构选择IDE当然是WebStorm,但遗憾的是我不能在一个项目中拥有所有客户端(AngularJS和JavaScripts)和服务器端(Scala-Play)代码。
答案 0 :(得分:1)
我认为没有最佳的结合Play和Angular的最佳架构。这取决于项目,团队等的特殊性。
使用Angular开发UI部分和使用Play开发服务器端后端的决定是非常合理的。从技术上讲,它可以完成如下:
发展:
这两个部分都是作为独立项目开发的,具有更好的IDE。
客户端应该有一些入口点HTML页面。将其命名为 index.html 是合理的,但可以是任何其他名称。
对于客户端 - 服务器集成,请在Play端执行以下操作:
为默认网址添加路由,作为 index.html 的路由。路径中的参数 path 应该是相对于应用程序根目录的 index.html 的完整路径。 如果index.html直接位于公用文件夹中,则路由如下:
GET /defaultUrl controllers.Assets.at(path="/public", file ="index.html")
添加路由到客户端文件:
GET /*file controllers.Assets.at(path="/public", file)
现在,分发包将包含所有客户端文件。
将客户端文件放入 public 文件夹应该自动完成,例如通过组织客户端目录结构和客户端IDE的适当配置。
您可以在this post中找到更多示例。