首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >头部负载RequireJS

头部负载RequireJS
EN

Stack Overflow用户
提问于 2021-07-26 08:20:44
回答 1查看 57关注 0票数 0

我的网站使用RequireJS加载其他脚本。不幸的是,页面是作为HTML片段提供的独立小应用程序的组合(实际上它是一个Java ),其中一些包含依赖于RequireJS模块的内联脚本。

问题是,当RequireJS在底部加载时,主体中的应用程序无法使用它,因为它还不可用。

所以我们想出了两个解决方案:

  1. 将RequireJS移动到<head>标记
  2. 中,在head的第一个<script>中定义一个承诺变量requireJsLoadedPromise,该变量将在加载RequireJS后解析。由于它是第一个脚本,每个应用程序都可以注册一个处理程序,一旦RequireJS可用,它就会被调用。脚本可以这样使用:

代码语言:javascript
复制
requireJsLoadedPromise.then(requirejs => requirejs(['my/module'], /* ... */);

如您所见,解决方案2更复杂,是一种非标准解决方案,只适用于专门为其设计的应用程序。由于附加的承诺处理程序,它还会导致更多的嵌套。此外,它还会导致类似于解决方案1的<head>中的脚本,因此在页面加载性能方面可能与解决方案1一样糟糕。

我想知道解决方案1的缺点是什么。如果在头中加载RequireJS会对页面加载性能产生明显的影响,这可能会证明解决方案2是合理的。但我宁愿假设RequireJS在加载过程中所做的工作很少,并且将在脚本开始调用requirejs()时立即执行其主要工作。不过,我不太确定。

移动到<head>会产生明显的影响吗?

对于这个问题,还有什么更好的解决办法吗?

EN

回答 1

Stack Overflow用户

发布于 2021-07-28 13:21:11

我们在这个项目中也遇到了类似的问题。

我们实现了类似于Google DataLayer的机制。在页面的开头,我们做了一个与RequireJS具有相同API的小脚本,但是它只是排队等待脚本,直到真正的RequireJS加载。加载后,它弹出每个项目并调用真正的RequireJS。

如果你有更多的问题,请随便问。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68526589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档