【问题标题】:Requirejs and browser memory managementRequirejs和浏览器内存管理
【发布时间】:2014-11-06 07:26:18
【问题描述】:

我第一次开始使用 requirejs,我突然想到我使用它的方式可能不利于浏览器性能。情况如下:

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

谢谢!

【问题讨论】:

    标签: javascript optimization browser requirejs


    【解决方案1】:

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

    以下情况不适用该规则:

    1. 除了默认的contexts,您还可以创建。您必须在传递给requirejs.config 的配置中显式创建上下文,因此如果您现在不创建上下文,那么您只使用默认上下文。如果你在两个不同的上下文中请求同一个模块,它会被加载两次。

    2. 如果您使用requirejs.undef。如果您取消定义一个模块并再次要求它,那么它将被重新创建。

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

    【讨论】:

    • 非常有用。非常感谢。
    猜你喜欢
    • 2017-12-10
    • 2016-05-13
    • 1970-01-01
    • 2012-11-14
    • 2015-09-04
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    相关资源
    最近更新 更多