0

我们已经开始在我们的 javascript 框架中使用 requirejs,但是我们注意到一个似乎只在 Firefox 中出现的问题。

当请求来自服务器时,它包含我们要显示的组件(按钮、标签、复选框等)的 html 和 javascript。javscript 将包含特定于组件的信息。例如,标签中的文本应该是什么颜色。

一个简单的例子是

<button type="button" id="button123">Test</button>
require(['BUTTONDEPENDENCY'], function() {
    register("button123");
    console.log("component info");
    ...
});

这个垫片有点像。

BUTTONDEPENDENCY = /js/button.js

该请求还包含一个 JSON 数组,其中包含有关这些组件的信息(我不会详细介绍它们)。JSON 数组在浏览器加载 html/javascript 后执行。

在执行 JSONArray 中的每个对象时,我需要执行一个getComponent()函数。当它试图执行getComponent('button123')它时找不到它,因为尚未执行 require 函数(需要做register("button123");)。它确实被执行了,但是在它找不到之后。我在 Chrome 中没有看到这个问题,所以我猜这是时间问题(Chrome 加载依赖项更快?)

为什么它在 Chrome 中运行良好?

为什么即使之前已经加载到模块,加载也需要更长的时间?

我是否应该强制 javascript 在执行 getComponent 之前等待,直到 register 已执行?这可能会导致我们的应用程序出现问题

任何建议都会很棒。

4

1 回答 1

0

我相信这正是 RequireJS 的工作方式。

http://requirejs.org/docs/api.html#pageload

例如在下面的代码中,我相信您会在第一个警报之前收到第二个警报:

<script>
require(['foo'], function(foo){
    alert(1);
});
</script>
<!-- lots of HTML -->
<script>
    alert(2);
</script>
于 2013-06-04T18:05:51.357 回答