我们正在尝试创建具有多个/独立“子应用程序”的门户类型应用程序。假设所有子应用程序都是用 Angular 编写的,那么实现以下目标的好模式是什么。
- 每个应用程序都可以相互独立地开发和部署。
- 它们共享一个通用的身份验证服务,它们可以共享通用库(指令、过滤器等)。
- 在任何给定时间,只有一个应用程序可见且处于活动状态。每个子应用的范围是相互隔离的。
- 当用户在子应用程序之间移动时,只要用户不刷新页面或访问另一个静态链接,该状态就会保持。(我认为这是 Angular 内置的,可能不需要特别努力)
- 每个子应用程序将有多个视图(它将有自己的菜单)。根据可用的子应用程序,将有一个顶部菜单。理想情况下,顶部菜单是根据部署的子应用程序动态构建的。也许有一个服务器端组件(服务器检测文件夹结构等并确定部署了哪些应用程序并将必要的 js 代码注入页面)。
鉴于 AngularJs 没有多级视图结构,我正在考虑在不同的 div 上使用多个 ng-app 声明,然后使用 $window 范围来存储活动应用程序的键并隐藏不活动的应用程序。