gpt4 book ai didi

jQuery 的 getScript - 将文件包含到主范围中?

转载 作者:行者123 更新时间:2023-12-01 02:47:05 25 4
gpt4 key购买 nike

我对于如何在我的backbone.js 应用程序中包含文件进行了很多思考。在生产中,我显然会加入我的文件并最小化它们以将请求保持在最低限度,但在开发过程中,最好只加载所有文件,而不必为每个小更改调用构建脚本。

所以我研究了 jQuerygetScript() 方法。我尝试了一下并能够加载我的文件。

由于我已将 getScript 调用放入函数中,以确保在启动backbone.js 应用程序之前加载文件,因此似乎加载的每个脚本都没有包含在全局范围。

var loader = function () {
var scripts = ['/app/routers/myrouter.js'];

for (var i = 0; i < scripts.length; i++) {
$.getScript(scripts[i], function () {});
}

console.log(myrouter); // Works - myrouter is a function
init(); // Callback - we've loaded all scripts
};

var init = function () {
console.log(myrouter); // myrouter is undefined
};

$(document).ready(loader());

最佳答案

首先,您只是调用 loader() 而不是传递函数:

$(document).ready(loader);

会解决这个问题

其次,您将立即调用 init 回调,而不是在加载所有脚本时调用。如果有很多脚本需要使用promise:

    var scripts = ['/app/routers/myrouter.js'];
for (var i = 0; i < scripts.length; i++) {
scripts[i] = $.getScript(scripts[i]);
}


$.when.apply( $, scripts ).then( init, function(){
"some script failed";
});

上面使用的语法是$.when(promise1,promise2,...).then(successCallback, failureCallback) - 我们用promise填充数组并使用.apply 将它们应用为参数。

http://api.jquery.com/jQuery.when/

http://api.jquery.com/Deferred.then/

关于jQuery 的 getScript - 将文件包含到主范围中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8953620/

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