gpt4 book ai didi

javascript - 当使用 require.js 并使用 r.js 创建单个文件时,我们仍然可以获得加载时间的好处吗?

转载 作者:行者123 更新时间:2023-12-02 17:52:00 25 4
gpt4 key购买 nike

当使用 require.js 并使用 r.js 创建单个文件时,我们仍然可以获得加载时间的好处吗?

换句话说,我的 r.js 生成的最终单个文件大小超过 2MB...但是在我的代码中,我充分利用了 require.js,换句话说,我只在需要时加载所需的模块在代码中。

那么问题是,require js 是否必须读取整个 2MB 文件才能开始工作?我的意思是,它怎么可能只读取 2MB 文件的一部分...:/

因此,用 r.js 生成单个文件可能会达不到快速加载时间的目的...

没有?

谢谢

肖恩。

最佳答案

为什么是的,有可能滥用 r.js 并以损害性能的方式部署应用程序。部署分为三大场景:

  • 每个模块都是它自己的文件。这是不使用 r.js 时发生的情况。

  • 单个 bundle 包含应用程序的所有模块。简单的应用程序经常使用这种场景。

  • 多个模块分为多个 bundle 。部署场景可能涉及将模块 A、B、C 放入文件 A.js 中,将模块 C、D、E 放入文件 C.js 中。更复杂的应用程序可能会使用这种场景。这意味着在 r.js 的构建配置中使用 modules 选项。

就像任何其他优化任务一样,使用最后一个选项需要反射(reflection)要部署的应用程序的体系结构,并可能使用统计方法来确定如何最好地拆分应用程序,或者可能选择第二个选项。

例如,我正在开发的使用 RequireJS 的应用程序之一是一个具有多种模式的编辑器(类似于 Emacs 的模式,或者支持多种编程语言的 IDE 根据所编辑的语言改变它们的行为方式) )。由于用户肯定不会在单个编辑 session 中使用所有模式,因此将应用程序优化为以下内容是完全有意义的:a) 包含始终所需模块的核心包,b ) 每个编辑模式一个 bundle ,包含该模式定义的所有模块。这样,典型的使用场景就可以归结为下载两个文件:核心包和一个模式包。

类似地,国际化的应用程序可能希望将国际化数据部署在单独的包中,这样需要印地语的人就不会同时下载 100 种其他语言的数据。

现在解决问题中的一些具体问题:

So the question is, does require js have to read the whole 2MB file before it can start working?

是的,RequireJS 必须读取并执行整个文件。虽然理论上可能有一种方法可以分割包并仅执行所需的 define 调用,但我不相信在实践中这可以可靠地完成。最后,如果这是一次错误优化,导致性能变差,也就不足为奇了。

and so producing a single file out of r.js may beat the purpose of quick load times... no?

是的,生成单个文件可能不是最佳选择。解决方案是执行我上面解释的操作。

关于javascript - 当使用 require.js 并使用 r.js 创建单个文件时,我们仍然可以获得加载时间的好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21272578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com