angularjs - 建立一个大型应用程序 - 所有路线的一个地方?

时间:2014-03-02 14:42:13

标签: javascript angularjs

构建大型angularjs应用。我们的想法是使用类似require.js的东西来延迟加载其他模块或类似的东西。但问题是,我是否必须创建一个包含到其他模块的所有路由的大型route.js文件,或者我应该在每个模块中定义其routeprovider然后以某种方式将其注册到主{ {1}}档案? app.js是否有效,或者我必须找到一些require.js黑客。

当前的文件结构是:

angularjs

或者:

- frontend
    - css
    - js
        - lib             // containg angular.js
        - app.js          // containg the main angular.module
        - route.js        // routeProvider for the app.js
        - modules         // folder of modules
              - module1
                    - module1.js
              - module2
                    - module2.js

2 个答案:

答案 0 :(得分:0)

您可以使用任何一种方式。我尝试使用json文件中定义的配置并加载模块(我使用angular-route-segment,因为你可以有模块和子模块导航)。

一个问题是,在延迟加载控制器之后,你必须通过调用$controllerProvider.register来注册控制器。对于指令和其他指令也是如此。

您还可以在导航前定义路线并导航到该路线。

我使用requirejs尝试了所有这些。

请检查github项目here并告诉我任何事情。

答案 1 :(得分:0)

您无需在一个地方注册所有内容。这是Angular的好处:它允许您根据加载的内容组装组件,然后在准备好后以正确的顺序处理它们。

在我们的大型应用程序中,我们有module1module2注册它自己的路由。你只需要进入主模块。有几种方法可以做到:

  1. 只需创建一个全局引用,例如:

    var app = anglar.module("myMainModule", []); 
    
  2. 稍后引用它,即如果你调用没有依赖项的模块,它将引用现有的:

    var appLocal = angular.module("myMainModule"); 
    
  3. 无论哪种方式,您都可以设置main.js设置应用程序,然后在模块中引用它(通过再次通过调用模块或通过全局变量),然后在那里设置该模块的路由。 / p>