angularjs – 动态注入模块,仅在需要时
我使用Require.js结合Angular.js。
一些控制器需要巨大的外部依赖性,其他人不需要,例如,FirstController需要Angular UI Codemirror.这是一个额外的135 kb,至少: require([ "angular","angular.ui.codemirror" // requires codemirror itself ],function(angular) { angular.module("app",[ ...,"ui.codemirror" ]).controller("FirstController",[ ... ]); }); 我不想在每次我的页面加载只是为了使Angular快乐包括指令和Codemirror lib。 但是,当我需要的东西 define([ "app","angular.ui.codemirror" ],function(app) { // ui-codemirror directive MUST be available to the view of this controller as of now app.lazy.controller("FirstController",[ "$scope",function($scope) { // ... } ]); }); 我如何告诉Angular注入ui.codemirror模块(或任何其他模块)在应用程序模块aswell? 如果它的有用:我运行Angular 1.2.0。
我一直试图混合requirejs Angular一段时间了。我在Github(
angular-require-lazy)发布了一个小项目,我的努力到目前为止,因为范围是太大的内联代码或fiddles。该项目说明了以下几点:
> AngularJS模块是延迟加载的。 如何做: >从配置函数(我在angularjs-requirejs-lazy-controllers首次看到的技术)捕获提供者(例如$ controllerProvider,$ compileProvider)。 这个实现满足你的需求:它可以延迟加载Angular模块(至少是我使用的ng-grid),绝对是hackish :)和不修改外部库。 意见/意见是非常欢迎。 (EDIT)此解决方案与其他解决方案的区别在于它不会执行动态require()调用,因此可以使用r.js(和我的require-lazy项目)构建。除此之外,这些想法或多或少地在各种解决方案之间融合。 祝你好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |