2014-11-05 71 views
0

我开始第一次使用requirejs,而且我发现使用它的方式可能会对浏览器性能造成影响。这是的情况:Requirejs和浏览器内存管理

我的应用程序的性质是这样的,我需要加载的JavaScript模块的集合必须在运行时决定。基于用户输入,我必须加载十个js文件的任何子集1.js ... 10.js。我用requirejs做这个加载。问题出现在编写1.js ... 10.js时:它们都使用requirejs加载React。我的理解是,每个加载的React模块都将成为浏览器内存中的新对象。只有几个文件,它是一个重要的资源。不过,我很好奇扩展到这些动态加载的JavaScript文件有100个的情况,我是否应该担心这种内存问题(特别是在移动浏览器上)?这种扩大并不一定会发生,所以把它当作我的教化的思想实验。

谢谢!

回答

3

RequireJS的基本规则是一个模块只创建一次。它在第一次被请求时创建,并且所有后续请求获得模块的相同副本。

  1. 您除了默认的创建contexts

    如果规则不适用。您必须在传递给requirejs.config的配置中明确创建上下文,所以如果您现在不创建上下文,那么您只使用默认上下文。如果你在两个不同的上下文中请求相同的模块,它将被加载两次。如果使用requirejs.undef。如果您取消定义某个模块并再次需要它,那么它将会重新创建。

现在如果调用特定于第三方库的函数,会发生什么情况取决于这些库。例如,如果一个库有一个被称为十几次的函数,它可能会在每次调用它时分配新的结构。您必须通过阅读库的文档或阅读源代码来确定这一点。

+0

非常有用。非常感谢。 – 2014-11-06 21:11:37