【问题标题】:Is AMD (Lazyloading) really efficient?AMD(延迟加载)真的有效吗?
【发布时间】:2014-05-19 06:54:17
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript angularjs requirejs lazy-loading amd


    【解决方案1】:

    您只能比较效率,而不是绝对声称它。所以你需要问

    发送 40-50 个请求是否比 1 个连接文件的请求更有效?

    不,绝对不是。虽然您可能会因为并行化而获得一些优势(不太可能仍然如此),但开销却很大。

    是不是需要一个不需要的文件比总是加载文件更有效率?

    是的,很明显。

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

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

    为什么有人甚至会使用 AMD?

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

    【讨论】:

    • 我喜欢你的回答......它增加了一个新的视角
    • 模块化可以通过 Angular 的依赖注入模块来实现。这也有助于单元测试。我问这个问题是为了确保 AMD 没有任何我不知道的方面。您涵盖了所有要点,因此考虑到这种情况,我决定采用串联方法,更加自信。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-04-27
    • 2014-06-22
    • 2010-10-25
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多