模块与控制器不同。一个模块包含应用程序的所有部分。这包括控制器、服务、指令等。控制器只是属于模块的一个东西。模块不仅包含应用程序的某些部分,而且还允许每个部分找到彼此。模块是依赖注入的基础。
因此,您在一家公司中有 3 家不同的公司。这些公司是否属于同一个域?它们是单独的网站还是单个网站?如果每个公司都有自己的域或单独的网站,您将别无选择,只能将它们分成单独的 Angular 应用程序。单页应用程序不能跨越多个域。
如果您为每个模块定义路由器,那么您正在寻找单独的应用程序。您可以定义 3 个单独的模块并将它们导入主应用程序,但主应用程序将定义路由器。我不完全确定每个应用程序可以在单独的模块中拥有多个路由器。我找不到任何这样的例子。理论上也许可以,但似乎很难维护。
但仅考虑到我们所知道的情况,很难再提出任何建议,因为这 3 家公司的互动方式并不清楚。他们会共享代码吗?它们是否必须全部在一个页面应用程序中,或者您可以将它们拆分为单独的 html 页面,每个页面都有自己的 Angular 应用程序?
更新:
所以我会用自己的路由器将每个公司分成自己的应用程序。我会让它们成为一个单独的单页应用程序。您可以选择是否共享代码。我的应用程序由多个单页应用程序组成,我在它们之间共享代码。这是我的做法:
var RegistrationApp = angular.module("RegistrationApp", ["ngResource",'ui.bootstrap',"ngRoute", "ngAnimate"]);
var App = RegistrationApp;
然后在我定义的任何其他类型的事物中,我都会像这样使用全局变量 App:
App.factory("RegistrationService", function($http) {
通过在我构建的所有应用程序中定义全局变量 App,我可以简单地通过将这些组件包含在客户端正在加载的应用程序中来共享代码,它将将该代码拉入该应用程序的模块中。
登录将是服务器端所做的事情,它会在您的浏览器上放置一个 cookie,因此从技术上讲,每个应用程序都可以使用该身份验证,只要 cookie 映射到域。如果您对每个公司都有单独的 URL(即,firm1.company.com、firm2.company.com、firm3.company.com),则必须小心该 cookie 的定义方式,因为默认情况下,如果您在 www.company 下登录。 com cookie 不会被firm1、firm2、firm3 看到,因为它们是不同的域。您必须为 .company.com 设置一个 cookie,以便子域可以看到它。但是,如果您正确登录,则不需要公司/应用程序之间的通信。