用户谷歌关闭懒惰加载JavaScript

时间:2010-09-27 18:34:00

标签: javascript google-closure

我特别喜欢使用Google Closure来要求其他javascript类的能力,但我想知道是否可以使用goog.require来延迟加载其他javascript类。当我在页面加载后尝试使用goog.require时,它似乎刷新或变为空白:( 有没有办法按需获取脚本,也许可以通过回调设置它,所以我可以在加载完成后运行一些javascript?

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

goog.require不适用于加载任何脚本。但是,根据需要,延迟加载脚本文件没有什么特别之处。只需动态创建节点并将其添加到您的页面:

function require(src)
{
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = src;
    document.body.appendChild(script);
}

上述函数将从src参数指定的URL加载脚本。

回调是另一回事。加载脚本后,您不会触发事件。如果您希望在加载脚本时收到通知,则需要从脚本本身通知已加载的脚本。例如,您可以在页面上调用预定义函数作为要加载的javascript文件中的最后一个语句。调用此函数后,您就知道脚本已完成加载。但是,要做到这一点,您需要能够修改加载的脚本文件。

已加载通知脚本的类似方法与JSONP一起使用。使用上面相同的方法检索JSONP数据 - 向页面添加动态创建的脚本节点。但是,默认情况下,从服务器返回数据不会导致状态更改。需要函数调用来指示已发生的事情(例如,数据已到达)。使用JSONP,您可以在JSONP请求的URL中指定函数的名称。然后,服务器返回一段javascript,其中调用您指定的函数,在参数中传递JSON数据。

所有这些都是为了建议您在脚本加载后需要能够在页面上调用函数。