gpt4 book ai didi

javascript - 以同步方式使用requirejs(AMD)是错误的吗?

转载 作者:数据小太阳 更新时间:2023-10-29 04:37:09 25 4
gpt4 key购买 nike

我正在开发一个 JavaScript 繁重的 Web 应用程序;如果没有 JavaScript,那么整个应用程序都是无用的。我目前正在使用 requirejs 作为我的模块加载器,并且 r.js用于在生产环境中将我的 JS 优化为单个文件的工具。

目前,在生产中我的标记看起来像这样;

<script src="/js/require.js"></script>
<script>
require.config({
// blah blah blah
});

require(['editor']); // Bootstrap the JavaScript code.
</script>

但是,这会异步加载 JavaScript,这使得页面在加载 JavaScript 之前呈现为不可用;我不明白这一点。相反,我想像这样同步加载 JavaScript;

<script src="/js/bundle.js"></script><!-- combine require.js, config and editor.js -->

这样,当页面呈现时,它是可用的。我读过所有现代浏览器都支持 parallel loading ,这让我相信 Internet 上建议避免这种方法的大部分建议都已过时,因为它会阻止并行下载。

还有;

  1. AMD(异步 模块定义)暗示这不是 requirejs 的使用方式。
  2. 在开发中,我想将未组合的文件作为多个脚本标签插入,而不是单个缩小文件;

    <script src="/js/require.js"></script>
    <script>/* require.config(...); */</script>
    <script src="/js/editor-dep-1.js"></script>
    <script src="/js/editor-dep-2.js"></script>
    <script src="/js/editor.js"></script>

    ...然而这在 requirejs 中似乎很繁琐(使用 r.js 生成假构建,以获取 editor.js 的依赖项列表),感觉错误。 p>

因此,我的问题如下;

  1. 关于避免同步 <script /> 我是对的吗?的建议已过时?
  2. 以这种方式使用 requirejs/AMD 是否像它感觉的那样错误?
  3. 是否有我错过的替代技术/方法/工具/模式?

最佳答案

简短的回答:是的,这是错误的。您使用 require.js 首先加载所有依赖项,然后在加载所有依赖项后,运行依赖于您加载的所有内容的代码。

如果您的页面在您的 require-wrapped 代码运行之后才可用,则问题不是 require,而是您的页面:相反,制作一个最小的页面并指示它仍在加载,上面没有其他(可见)内容(例如,在 JS 完成之前不应该使用的元素上使用 css display:none),并且仅在 require 完成并且您的代码已设置后才启用/显示实际功能页面元素所有必要的 UI/UX。

关于javascript - 以同步方式使用requirejs(AMD)是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16997787/

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