感谢Dan Wahlin的精彩文章,我设法实现了Angular的控制器和服务的延迟加载。但是,似乎没有一种干净的方法来懒惰加载独立的模块。
为了更好地解释我的问题,假设我有一个没有RequireJS的应用,其结构如下:
// Create independent module 'dataServices' module with 'Pictures' object
angular.module("dataServices", []).factory("Pictures", function (...) {...});
// Create 'webapp' ng-app, with dependency to 'dataServices', defining controllers
angular.module("webapp", ['dataServices'])
.controller("View1Controller", function (...) {...})
.controller("View2Controller", function (...) {...});
这是在Plunker中带有RequireJS的示例应用程序:http
://plnkr.co/aiarzVpMJchYPjFRrkwn
问题的核心是Angular不允许ng- app
在实例化后添加依赖。结果,我的解决方案是使用angular.injector
检索Picture
要在my中使用的对象的实例View2Controller
。查看js/scripts/controllers/ctrl2.js
文件。
这给我带来了两个问题:
你们中有没有人知道如何使用RequireJS来延迟加载独立模块,并以某种方式将其挂在angular上,以便可以使用正常的角度依赖注入语法?
注意 :
问题在于 独立模块的 延迟加载。此特定示例的一种简单解决方案是在期间使用缓存的$ providers创建“图片”对象,ng- app.config
但这不是我想要的。我正在寻找可与第三方模块配合使用的解决方案angular-resource
。
看看我在GitHub上的项目:angular-require-lazy
该项目旨在展示一个想法并激发讨论。但是, 这 正是您想要的(请检查Expenses-
view.js
,它会延迟加载ng-
grid)。
我对评论,想法等非常感兴趣。
(编辑)ng-grid Angular模块的延迟加载如下:
expenses-view.js``/expenses
激活路线后,会延迟加载expenses-view.js
将ng-grid指定为依赖项,因此RequireJs首先加载ng-gridangular.module(...)
为了做到这一点,我 用angular.module
支持懒惰的我自己的方法 替换了
(实际上是代理)真实的方法。请参阅bootstrap.js和route-
config.js(功能initLazyModules()
和callRunBlocks()
)。
此实现有其缺点,您应该意识到:
为了显示这种关系,让我们开始定义一个简单的模块,作为我们的示例应用程序的根模块。 app/app.module.ts 到目前为止,这是一个非常常见的模块,依赖于,有一个路由机制和两个组件:AppComponent和EagerComponent。 现在,让我们专注于定义导航的应用程序(AppComponent)的根组件。 app/app.component.ts import { Component
本文向大家介绍Webpack 实现 AngularJS 的延迟加载,包括了Webpack 实现 AngularJS 的延迟加载的使用技巧和注意事项,需要的朋友参考一下 随着你的单页应用扩大,其下载时间也越来越长。这对提高用户体验不会有好处(提示:但用户体验正是我们开发单页应用的原因)。更多的代码意味着更大的文件,直到代码压缩已经不能满足你的需求,你唯一能为你的用户做的就是不要再让他一次性下载整个应
描述 (Description) 延迟加载可应用于图像,背景图像和淡入效果,如下所述 - 对于图像 要在图像上使用延迟加载,请按照给定的步骤进行操作 - 使用data-src属性而不是src属性来指定图像源。 将类lazy添加到图像。 <div class = "page-content"> ... <img data-src = "image_path.jpg" class = "l
本文向大家介绍AngularJS使用ocLazyLoad实现js延迟加载,包括了AngularJS使用ocLazyLoad实现js延迟加载的使用技巧和注意事项,需要的朋友参考一下 最近开发一个系统遇到了一个问题,用angular路由一个html片段,该片段需要使用一个js插件来实现一个富文本编辑器。关键问题在于必须要在片段加载后通过js与dom元素进行绑定。一开始想当然以为直接把js代码写在代码段
本文向大家介绍AngularJS中的Directive实现延迟加载,包括了AngularJS中的Directive实现延迟加载的使用技巧和注意事项,需要的朋友参考一下 所谓的延迟加载通常是:直到用户交互时才加载。如何实现延迟加载呢? 需要搞清楚三个方面: 1、html元素的哪个属性需要延迟加载? 2、需要对数据源的哪个字段进行延迟加载? 3、通过什么事件来触发延迟加载? 自定义的Directive
我试图实现延迟加载,但得到如下错误** 错误错误:未捕获(在promise中):错误:BrowserModule已加载。如果您需要从一个延迟加载的模块中访问一些公共指令,比如NgIf和NgFor,那么可以导入CommonModule。 ** 需要帮助这是我的模块 共享模块 2.设置模块 5.AppModule