我正在制作一个简单的javascript游戏引擎以获得乐趣,而且在处理它时遇到了一种烦人的问题。
目前,我包含javascript文件的方式是使用index.html页面调用我的javascript“main”,并在<script type="text/javascript"
部分中包含<head>
个标记的所有javascript文件。
这种方法运行得相当不错,除了大概有6个左右的页面刷新它无法加载其中一个javascript文件。我收到如下错误:GET http://localhost:8000/js/Input.js
。当所有文件组合在一起并缩小时,它工作正常,所以我认为这与文件的异步加载和在加载所有文件之前开始的游戏有关?我不确定。我现在包含大约25个文件,随着我添加更多文件,问题似乎越来越严重。
有没有更好的方法来包含javascript文件?我试图让它尽可能容易地工作,所以我不想做大量服务器端的事情。 (目前我只是在python中使用SimpleHTTP服务器命令)
答案 0 :(得分:1)
如果错误是HTTP错误,并且当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);
});
});