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

What is the optimal architecture combining Scala-Play and AngularJS?

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

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

  2. 允许页面重新加载,每个页面重新加载都会成为不同的 AngularJS 根应用程序。这看起来很灵活,例如客户端不会因大型应用程序的大量数据而变得臃肿,但会针对不同的用例进行更好的分区。缺点是我需要不同的 AngularJS MVC 应用程序,而且我什至不确定如何将其组织为一个项目。有这样的例子吗?

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

对于这些类型的架构,我选择 IDE 当然是 WebStorm,但不幸的是我不能拥有所有客户端(AngularJS 和 JavaScript)和服务器端(Scala-在单个项目中播放) 代码。

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

决定开发 UI 部分与 Angular 和服务器端 back-end 与 Play 是非常合理的。从技术上讲,它可以按如下方式完成:

  1. 发展:

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

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

  2. 对于 client-server 集成,请在播放端执行以下操作:

    • Select 播放应用程序根目录下的 sub-folder,它将作为客户端文件的 "home"。默认解决方案是使用文件夹 public,因为它下的所有文件都会自动部署。
    • 所有客户端文件都应该复制到public文件夹下。文件可以以任何结构组织。
    • 为默认URL添加一个路由作为到index.html的路由。路由中的参数 path 应该是 index.html 相对于应用程序根目录的完整路径。 如果index.html直接在public文件夹下,路由是这样的:

      GET /defaultUrl   controllers.Assets.at(path="/public", file ="index.html")  
      
    • 将路由添加到客户端文件:

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

现在分发包将包含所有客户端文件。

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

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