Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs从不同模块到控制器的路由_Javascript_Angularjs_Web Applications_Requirejs - Fatal编程技术网

Javascript angularjs从不同模块到控制器的路由

Javascript angularjs从不同模块到控制器的路由,javascript,angularjs,web-applications,requirejs,Javascript,Angularjs,Web Applications,Requirejs,目前,我们正在创建一个新的web应用程序基础架构 我们首先加载一个仪表板,它本质上是显示登录用户及其菜单集的顶部栏。单击每个菜单将在主部分加载一个屏幕(主要是crud屏幕)。我们计划将每个crud屏幕及其组件(服务、控制器等)放在一个单独的模块中,该模块将封装彼此之间的所有屏幕,因此,例如,如果有78个屏幕,则每个屏幕将有78个单独的模块。我们也在使用Planning和Requirejs动态加载这些依赖项 然而,出现的问题是,我们需要将菜单与每个屏幕的每个模块相链接。通常在基于单个模块的应用程序

目前,我们正在创建一个新的web应用程序基础架构

我们首先加载一个仪表板,它本质上是显示登录用户及其菜单集的顶部栏。单击每个菜单将在主部分加载一个屏幕(主要是crud屏幕)。我们计划将每个crud屏幕及其组件(服务、控制器等)放在一个单独的模块中,该模块将封装彼此之间的所有屏幕,因此,例如,如果有78个屏幕,则每个屏幕将有78个单独的模块。我们也在使用Planning和Requirejs动态加载这些依赖项

然而,出现的问题是,我们需要将菜单与每个屏幕的每个模块相链接。通常在基于单个模块的应用程序中,它会这样做

config(function($routeProvider, $locationProvider) {
  $routeProvider
   .when('/Book/load', {
    templateUrl: 'book.html',
    controller: 'BookController'
  })
  .when('/Screen/load', {
    templateUrl: 'chapter.html',
    controller: 'ChapterController'
  });
其中BookController和ChapterController将位于同一模块中

然而,在我们的例子中,BookController将位于book屏幕的BookModule中,这同样适用于ChapterController。路由将位于初始的主模块中,例如AppModule,它在启动时首先加载仪表板

例如,我们如何将AppModule和routes与每个屏幕的每个模块链接(例如,在本例中为BookController和ChapterController),记住我们需要在需要时使用requirejs动态加载模块

(注:我们基本上是根据功能划分应用程序,系统中的功能通常等于屏幕)

此外,任何关于我们可以最好地构建我们的应用程序的任何其他方式的建议,包括上述问题的答案,都将非常感谢

问候,,
米琳达

为什么在初始主模块中有路由配置?这在您的模块之间创建了不必要的耦合(即,您的初始模块必须知道每个模块的所有可能路径),有点违背了将代码移动到模块中的初衷

每个模块都可以有自己的路由配置,该配置将在加载模块时生效。(一致的命名约定有助于避免未更新模块的路由之间的冲突)


在配置routeProvider时,您可以使用routes的resolve属性使用延迟加载机制:此处引用的资源将在routeChange事件发生之前解析,这使您能够等待任何承诺解析或文件的requireJS加载。在这方面可能会有所帮助。

到目前为止,据我所知,还没有机制可以在运行时动态加载模块,然后将它们合并到AngularJS应用程序中。你可以通过requirejs将你的应用程序分解为78个单独的模块,但你仍然需要一个主模块,它将所有其他78个模块作为依赖项。然后,您将在此主模块中配置所有路由


新的AngularJS路由器正在开发中,该路由器借鉴了其他更灵活的路由器(如ui路由器等),它将完全支持您所说的模块的动态加载,但据我所知,它在AngularJS 1.4之前不可用。

您可能会发现(或其一些概念)帮助。最佳实践是按功能构造角度文件,这意味着所有控制器、服务和属于仪表板应用程序的其他必须位于一个位置。依我看,按照你想要的方式组织你的文件是不好的