代码之家  ›  专栏  ›  技术社区  ›  Emma

通过ajax加载JavaScript的良好实践方法

  •  5
  • Emma  · 技术社区  · 15 年前

    免责声明:我对AJAX相当陌生!

    我更喜欢在加载每个需要它的页面时访问必要的javascript。

    我见过几种方法,我不确定哪种最适合我的需要:

    1. 在head中包含一个空脚本元素,并通过操作src属性。多姆。

    2. 通过创建新的脚本元素。DOM并将其附加到document.body(听起来与#1相同)。

    3. jQuery(我已经在使用)有一个ajax getScript()方法。
    4. 我还没有读到任何关于它的文章,但是我可以在ajax响应中包含一个脚本元素吗?

    一些担忧是: -是使用缓存副本,还是每次发出ajax请求时都下载脚本。请注意,脚本将是静态的。

    3 回复  |  直到 15 年前
        1
  •  6
  •   Ken Redler    15 年前

    在jQuery环境中,我会使用 getscript() getscript 获取脚本 这样地:

    $.ajax({
        cache: true,
        dataType: "script",
        url: "your_js_file.js",
        success: yourFunction
    });
    
        2
  •  1
  •   lucideer    15 年前

    因为这里的所有其他答案都只是说“使用jquery”,而没有任何进一步的信息/解释/理由,所以您提到的其他选项可能值得一看。

    • 选项1

      这可能有点复杂,因为它需要您等到一个脚本下载并运行之后再获取下一个脚本(因为您只有一个脚本元素)。

    • 更好的方法是,可以在第一个脚本元素完成下载之前将第二个脚本元素附加到DOM中,而不影响下载/执行。

    • 选项3

      在我之前的每个人都推荐,如果您在jQuery环境中并且已经为其他用途加载了(相当繁重的)jQuery库,那么这是很好的—仅为此加载jQuery库显然是多余的。值得注意的是 $.getScript() $.ajax() eval() 执行脚本。

    • 选项4

    • 选项5

      Nick Craver在第一篇评论中推荐了tbh,如果脚本是静态的,那么缓存将比多个HTTP请求更有效。如果您特别关心带宽,还可以考虑使用cache.manifest进行主动缓存: http://www.html5rocks.com/tutorials/appcache/beginner/

        3
  •  0
  •   Anurag    15 年前

    与…同行 getScript . 它基本上与第二种方法做相同的事情,但是您不必担心如何在各种浏览器(主要是IE)中侦听负载。