Eug*_*ets 18 javascript architecture module angularjs
我有一个由N个模块组成的应用程序.几乎所有这些模块都将按需加载.
有没有什么好的方法来组织动态加载和卸载模块的AngularJS应用程序?
从Angular 1.2.16和1.3.0 beta开始,该bootstrap()方法将DOM上的特定元素定义为模块集合的根范围.解除绑定没有相应的方法.该ng-app指令只是一个快捷方式bootstrap(),因此适用相同的限制.
与Artemis链接的angular-requirejs-seed项目没有回答你的问题.它使用该NG_DEFER_BOOTSTRAP!属性来挂起引导过程并动态定义在加载页面时要添加的模块.它没有卸载任何东西.
克服Angular固有无法卸载模块的最简单方法是销毁运行模块的DOM元素.不幸的是,通过摧毁元素,你也会失去你所拥有的任何标记.解决该问题的一个方法是将应用程序的标记放入HTML5 <template>元素并克隆其内容.这是我在JSBin中编写的一个示例,其中一个模糊命名的someGuyInASuit指令根据加载的模块加载Dr. Jekyll或Hyde先生的图片.
这种解决方法不适合由许多模块组成的应用程序,特别是如果您打算在用户与之交互时频繁地交换它们.首先,你的所有模型都将被销毁.此外,所有config()和run()块将重新运行.您可能想要分叉Angular并添加自己的un-bootstrap方法,或者查看另一个框架,例如React,它有一个卸载内置组件的方法.
小智 1
也许您会发现这篇文章很有帮助。http://rarabaolaza.tumblr.com/post/56707155391/a-plugin-based-architecture-for-angularjs-apps
\n\n它描述了使用 requirejs 和一些元数据创建基于插件的角度应用程序的近似方法,其中每个插件都是一个模块,也许您可以根据您的需求调整它或获得一些想法。但没有模块卸载我\xc2\xb4m害怕。
\n\n如果您认为这可以帮助您,我\xc2\xb4m 目前正在修改它并(我相信)改进想法,所以请随时询问
\n\n华泰
\n