Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs:ocLazyLoad vs Requirejs_Angularjs_Requirejs_Lazy Loading_Single Page Application - Fatal编程技术网

Angularjs:ocLazyLoad vs Requirejs

Angularjs:ocLazyLoad vs Requirejs,angularjs,requirejs,lazy-loading,single-page-application,Angularjs,Requirejs,Lazy Loading,Single Page Application,我正在做一个大型的盎格鲁语项目,显然我们需要一种方法来延迟加载脚本 我以前使用过require.js,它非常好,但问题是,在连接和缩小文件后,我们得到了一个1.5M的js文件 所以我刚刚遇到了,看起来很有希望,但是我在网上看到了很多同时使用require和ocLazyLoad的例子,我有点困惑,为什么你会同时使用这两个。它们不是都在做同样的事情吗?您需要ocLazyLoad和RequireJS,因为现在您需要处理两个独立的模块概念—javascript模块和内部模块 在初始引导之后,angula

我正在做一个大型的盎格鲁语项目,显然我们需要一种方法来延迟加载脚本

我以前使用过require.js,它非常好,但问题是,在连接和缩小文件后,我们得到了一个1.5M的js文件


所以我刚刚遇到了,看起来很有希望,但是我在网上看到了很多同时使用require和ocLazyLoad的例子,我有点困惑,为什么你会同时使用这两个。它们不是都在做同样的事情吗?

您需要ocLazyLoad和RequireJS,因为现在您需要处理两个独立的模块概念—javascript模块和内部模块

在初始引导之后,angularjs不再允许注册新的模块和组件,如指令和控制器(至少不使用标准方式)

RequireJS只加载javascript文件,但它没有在新代码中注册新的angular模块和组件

ocLazyLoad的作用是允许您使用第三方模块加载器(如RequireJS)加载其他文件,更重要的是,它在延迟加载的代码中注册新的模块和组件


总之,您可以仅使用RequireJS惰性地加载代码,但不能仅使用RequireJS加载角度模块和组件。需要额外的工作,比如由ocLazyLoad执行。

您可以将RequireJS与ocLazyLoad一起使用,但我不推荐,这是可能的,因为人们要求我这样做,而且很容易集成。 您不需要RequireJS,因为ocLazyLoad包含自己的js/css/模板文件加载程序,它可以加载任何类型的文件,而不仅仅是角度模块

如果您想延迟加载Angular模块,您需要一个lib来将它们注册到Angular(或者等待Angular 1.5,这样您就可以完成)


底线是:您可以将RequireJS与ocLazyLoad一起使用,也可以仅使用ocLazyLoad(推荐),但不能仅使用RequireJS

注意,使用RequireJS可以根据需要加载一些文件,即仅当您实际需要时(例如在指令或类似文件中)。所以,让您的“缩小”包保持小规模,只包含最初需要加载的内容。@floribon-但OcLazyLoading也有同样的功能,它甚至可以与ui路由器集成,并按状态加载文件。我回答了您对包大小的担忧。但我不知道什么是定时加载,这听起来很棒,因为我一直想这样做。它们不是互斥的,oclazyload需要一个依赖项管理器引擎,默认为$script.js,但显然你可以使用RequireJS,所以我想两者都使用。oclazyload不是自己加载资产吗?如果可以使用oclazyload,为什么要同时使用这两个呢。但问题是一对一。很好的解释。但在实现oclazyload时我有疑问。使用oclazyload,很容易加载。当谈到加载依赖项时,在requirejs中,如果我在shim中提到deps,它将自动加载依赖项。但在oclazyload中,我必须手动提到每个路由的每个依赖项。有没有像requirejs那样重用代码来加载依赖项?我认为requirejs可以维护依赖项。很容易在代码中找到依赖项。带requirejs的OcLazyLoad将提供更好的代码管理和可重用性。感谢@Oliver这是一个很好的解释。我也写了一篇关于这个的博客。虽然这是一个遗留问题,但您需要requireJS来指定异步加载依赖项的确切顺序。我认为ocLazyLoad不支持这一点。此外,您将无法组织文件结构,例如“modules/feature1/feature1Module.js”、“modules/feature1/feature1Controller.js”、“modules/feature1/feature1Service.js”。