构建大型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
答案 0 :(得分:0)
您可以使用任何一种方式。我尝试使用json文件中定义的配置并加载模块(我使用angular-route-segment,因为你可以有模块和子模块导航)。
一个问题是,在延迟加载控制器之后,你必须通过调用$controllerProvider.register
来注册控制器。对于指令和其他指令也是如此。
您还可以在导航前定义路线并导航到该路线。
我使用requirejs
尝试了所有这些。
请检查github项目here并告诉我任何事情。
答案 1 :(得分:0)
您无需在一个地方注册所有内容。这是Angular的好处:它允许您根据加载的内容组装组件,然后在准备好后以正确的顺序处理它们。
在我们的大型应用程序中,我们有module1
或module2
注册它自己的路由。你只需要进入主模块。有几种方法可以做到:
只需创建一个全局引用,例如:
var app = anglar.module("myMainModule", []);
稍后引用它,即如果你调用没有依赖项的模块,它将引用现有的:
var appLocal = angular.module("myMainModule");
无论哪种方式,您都可以设置main.js
设置应用程序,然后在模块中引用它(通过再次通过调用模块或通过全局变量),然后在那里设置该模块的路由。 / p>