0

我正在制作一个简单的 javascript 游戏引擎来取乐,并且在处理它时遇到了一种烦人的问题。

目前,我包含 javascript 文件的方式是拥有一个 index.html 页面,该页面调用我的 javascript“main”,并<script type="text/javascript"在该部分中包含我所有带有标签的javascript 文件<head>

这工作得相当好,除了可能有六分之一左右的页面刷新它无法加载其中一个 javascript 文件。我收到一个错误,例如:GET http://localhost:8000/js/Input.js。当所有文件组合在一起并缩小时它工作正常,所以我认为这与文件的异步加载和游戏在所有内容加载之前开始有关?不过我不确定。我现在包含大约 25 个文件,随着我添加更多文件,问题似乎变得更糟。

有没有更好的方法来包含 javascript 文件?我正在努力让这件事尽可能简单,所以我不想做大量的服务器端工作。(目前我只是在 python 中使用 SimpleHTTP 服务器命令)

4

1 回答 1

1

如果错误是 HTTP 错误,并且失败时的 URL 与成功时的 URL完全相同,那么问题与您的 JS 无关,而与您的 Web 服务器有关。

但是,如果您使用的是$.getScript之类的东西并且错误与一些未初始化的变量有关,那么您可能正在循环所有要包含的脚本并为每个脚本执行一个getScript。如果是这样,由于getScript使用 AJAX 请求来加载 JS,因此无法保证脚本的执行顺序。为了解决这个问题,如果您不介意性能下降,因为这种情况似乎仅在您的开发环境中运行时,您可以链接请求,以便在加载前一个(必需的)JS文件之前不发出请求,因此顺序执行您的脚本文件:

var dfr = $.Deferred().resolve();
var scripts = ["script1.js", "..."];

$.each(scripts, function(i, script) {
    dfr = dfr.pipe(function() {
        $.getScript(script);
    });
});
于 2012-11-08T03:56:36.877 回答