结合Scala-Play和AngularJS的最佳架构是什么?

时间:2017-02-07 14:24:55

标签: angularjs playframework webstorm

我最近在一个纯Scala-Play应用程序中工作,后来又在一个纯粹的AngularJS应用程序中工作。我对这两者印象非常深刻,我想知道将两个框架结合在一起的最佳点是什么。由于这两个框架可以是互补的,但也可以在不同的区域重叠,例如MVC和页面路由,据我所知,这些是一些可能性:

  1. 单页设计,仅使用AngularJS MVC并使用Scala-Play作为"沉闷"服务层后端,没有整页刷新。

  2. 允许页面重新加载,每个页面重新加载成为不同的AngularJS根应用程序。这似乎很灵活,例如客户端不会为大型应用程序提供如此多的数据,而是针对不同的用例进行更好的分区。缺点是我需要不同的AngularJS MVC应用程序,而且我甚至不确定如何将其组织为项目。有这样的例子吗?

  3. 典型的服务器端Web App,使用Play MVC和AngularJS处理每个单独页面的UI模型。

  4. 我为这些类型的架构选择IDE当然是WebStorm,但遗憾的是我不能在一个项目中拥有所有客户端(AngularJS和JavaScripts)和服务器端(Scala-Play)代码。

1 个答案:

答案 0 :(得分:1)

我认为没有最佳的结合Play和Angular的最佳架构。这取决于项目,团队等的特殊性。

使用Angular开发UI部分和使用Play开发服务器端后端的决定是非常合理的。从技术上讲,它可以完成如下:

  1. 发展:

    • 这两个部分都是作为独立项目开发的,具有更好的IDE。

    • 客户端应该有一些入口点HTML页面。将其命名为 index.html 是合理的,但可以是任何其他名称。

  2. 对于客户端 - 服务器集成,请在Play端执行以下操作:

    • 选择播放应用程序根目录下的子文件夹,该子文件夹将作为" home"对于客户端文件。默认解决方案是使用文件夹 public ,因为其下的所有文件都是自动部署的。
    • 应将所有客户端文件复制到 public 文件夹下。可以以任何结构组织文件。
    • 为默认网址添加路由,作为 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)  
      
  3. 现在,分发包将包含所有客户端文件。

    将客户端文件放入 public 文件夹应该自动完成,例如通过组织客户端目录结构和客户端IDE的适当配置。

    您可以在this post中找到更多示例。