我有一个关于如何使用 angularjs 和必要时使用 ui-router 来最好地编写一个非常大的单页应用程序的问题。
我的场景是这样的。
- 我有多个组件,可以说是趋势模块、“业务”分析器、仪表板/工作区等等。
- 从启动器侧边栏中,模块可以在单独的选项卡中打开一次或多次,就像在老式 MDI Windows 应用程序中一样。
- 有些模块是完全独立的,有些可能使用/共享一个通用的过滤小部件,该小部件可能位于页面的某处。
总体思路是,这些组件中的每一个都可以在单独的选项卡中多次打开,因此用户可以在工作流程中轻松地在它们之间切换。另一件事是所有这些都应该支持 url 链接。打开 url 不会涉及重新打开所有“标签”,只是 url 链接到的那个。
到目前为止,当使用 angularjs 时,我有限的理解表明,实现这一点的最佳方法是将我的项目拆分为单独的业务模块,如大型应用程序所推荐的那样。每个业务模块都包含相关的模板、服务、指令等。
然后我可以使用 ng-include 来包含模板,然后为每个业务模块实例化控制器。我已经测试过可以多次实例化同一个控制器并将其自己的数据分开。每次创建特定控制器时还需要包含所需的模板。这将涵盖我们想要在单独的选项卡中多次实例化同一个模块的情况。
这并不能解决 url 链接的问题,尽管它让我想到了支持多个 ui-views 的 ui-router 替代方案,这也可能解决这个问题,但我对此还不够了解。我想使用 ui-router 可以包含一个 url 语法,其中包含每个视图的“实例”,但我不确定如何去做。使用手动引导的多个应用程序的想法似乎是不可能的,因为这减少了不同模块之间通信的可能性,而且一般意见似乎表明这是一个坏主意。
对于在这种情况下什么是好方法,我将不胜感激任何反馈和建设性意见。