2012-12-08 46 views
8

我们正在尝试创建具有多个/独立“子应用程序”的门户类型应用程序。假设所有子应用程序都是用Angular编写的,那么实现以下目标的好模式是什么。带AngularJS(多个独立应用程序)的门户类型应用程序

  1. 每个应用程序都可以独立开发和部署。
  2. 他们共享一个共同的认证服务,他们可以共享公共库(指令,过滤器等)。
  3. 在任何给定时间只有一个应用程序可见并处于活动状态。每个子应用程序的范围是相互隔离的。
  4. 当用户进入子应用程序之间时,只要用户不刷新页面或访问另一个静态链接,就会保持该状态。 (我认为这是内置到Angular中,并且可能不需要特别的努力)
  5. 每个子应用程序都会有多个视图(它将拥有自己的菜单)。将会有一个基于子应用程序可用的顶级菜单。理想情况下,顶级菜单是根据部署的子应用程序动态构建的。也许有一个服务器端组件(服务器检测到文件夹结构等,并确定部署的应用程序,并注入必要的JS代码到页面中)。

鉴于AngularJs没有多层次的视图结构,我考虑在不同的div上使用多个ng-app声明,然后使用$ window scope来存储活动app的key并隐藏那些不活跃的。

回答

0

这件事我也一直在考虑尝试实施。虽然我没有一个完整的工作解决方案,但我相信这种类型的门户应用程序将由同一页面上的多个角度应用程序组成。

门户应用程序将是主页上的传统ng-app指令,“portlet”将动态创建并在子视图div上手动引导角应用程序。您可以通过注入门户服务(包含在其自己的模块中)来共享数据,状态,身份验证,个性化等,这些服务将这些功能提供到手动引导的portlet应用程序中。

棘手的部分是门户网站的应用程序将如何发现portlet的应用和服务于它们的角模块知道这些应用程序将被独立部署自己的网址,网络应用程序。

如果服务数据在应用程序之间是常见的,或者您需要通过门户服务(如数据管理器)尝试和利用HTML5本地存储,我仍然有一些疑问。