我正在制作HTML5游戏引擎。 HTML文件中只包含一个文件,即engine.js。该脚本应该创建一个全局Engine对象,可以由用户在其他脚本中使用。 Engine对象是引擎中所有类和函数的包装器,但是,我想将引擎分成不同的文件。我认为如果所有这些都被用户包含在内,那将会有点草率,那么我怎样才能让engine.js自动包含?
(类似于Node.js中的require()。)
答案 0 :(得分:4)
看看RequireJS。这是一个符合您要求的图书馆。
答案 1 :(得分:2)
你有一个选择是使用javascript到javascript编译器,如Closure Tools。使用RequireJs,您的客户端仍将进行多个http GET来获取每个文件(IIRC), 使用闭包工具,您的单独javascript文件将合并为一个(也缩小和删除死码。)
这有利有弊,其中一些缺点包括,
答案 2 :(得分:1)
纯粹的JavaScript方法并不像您预期的那样简单,因为JS只能在飞行前检查完成后才能发挥作用。包含JavaScript脚本是可能的;但是,使用“全球范围”比其他情况更加禁止。
window.onload = function()
{
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'scripts/yourScript.js';
newScript.onload = yourNormalOnload;
// or newScript.onreadystatechange = yourNormalOnload;
document.body.appendChild(newScript);
}
function yourNormalOnload()
{
//use whatever functions declared in yourScript.js here
}
在这个示例中,yourNormalOnload
函数将是您的脚本,但是为了能够访问您动态获得的脚本,您必须将其全部包装在回调函数中,该函数在调用后调用包含的脚本已加载。值得庆幸的是,附加脚本会触发onload
或onreadystatechange
事件,因此您可以倾听。
您可能希望阅读this响应,代码几乎相同,但提供了比我更多的解释。