javascript - AMD(Lazyloading)真的高效吗?

标签 javascript angularjs requirejs lazy-loading amd

我一直在开发一个单页应用程序,现在它已经变得非常庞大。我从 Require JS 和 AngularJS 开始,但是组件太多,加载单个页面会向服务器发出大约 40-50 个请求(包括模板文件)。

即使为所有 future 请求缓存数据,第一次尝试发送 40-50 个请求的成本也相当昂贵,而且在较慢的互联网连接上速度非常慢。

我的理解是,如果我们连接并创建两个脚本文件 - Vendors.js (不经常更改)和 Private.js (每次都会更改)发布)页面加载时间会快得多。如果这是真的那么为什么有人会使用 requirejs 呢?

最佳答案

你只能比较效率,不能对此做出绝对的断言。所以你需要问

Is sending 40-50 requests more efficient than 1 request for a concatenated file?

不,绝对不是。虽然您可能因为并行化而获得很少的优势(仍然不太可能),但开销太大了。

Is not requiring an unneeded file more efficient than always loading the file?

是的,显然是这样。

这就是延迟加载的全部内容:它仅在需要时才请求文件,而不是过早地下载所有内容。

因此,对于一个快速的应用程序,您需要确定始终(或最常)需要哪些资源,并将它们连接到一个文件。其他很少需要的模块可以单独运行。像您一样考虑更改资源的缓存可以进一步优化。

why would someone even use AMD at all?

因为它拥抱模块化。此外,它还支持非常灵活的部署策略 - 从开发中独立服务每个模块到使用优化器进行生产。无需更改您的代码文件。

关于javascript - AMD(Lazyloading)真的高效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23731436/

相关文章:

javascript - 如何在表单验证中使用Angular应用jquery的远程方法?

javascript - Angular + requirejs : quick refreshing pages cause page stop working in chrome

jquery - 如何在 Require.js 中使用 Foundation 4 中的 Zeptos 和 Yeoman 中的 Grunt

javascript:window.open 打开图像,它可以工作,但也会更改第一页

javascript - 'spin the event loop' 是什么意思?

javascript - 如何在属性中显示带撇号的 Angularjs 变量?

javascript - 如何使用 jasmine 对 .then 进行单元测试

javascript - IE 中的 $(document).ready() ,带有 require.js 优化代码

javascript - 如何使用 R 从国家文件馆 (archives.gov) 中抓取目录系列中的所有文件

javascript - 无法从子进程获取输出