我正在调查headjs(http://www.headjs.com)以加快javascripts的加载速度。 从文档来看,显然可能是控制脚本的执行顺序,然而,解析顺序是另一回事,并且是afaik,未确定。
在走这条路之前,我想知道以下是否会产生问题:
并行加载jquery.js和scripts.js,如:
head.js("//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js","/js/script.js");
scripts.js除其他外还有一些扩展jquery的函数,如:
$.fn.extend({
myMethod: function(){...}
});
当在jquery.js之前加载(和解析)scripts.js时,这可能会给出解析问题('$'或'jquery'未定义),或者仅在执行时检查'$'的定义脚本? (这不会给出问题,因为在jquery之后执行scripts.js)
我测试了一些东西并且对顺序毫无意义:
head.js("//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js","/js/script.js");
和
head.js("/js/script.js","//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js");
扩展似乎在执行时起作用:
head.ready(function() {
$('#someel').myMethod();
});
不知何故,我觉得它很有意思,但与此同时我会小心相信它每次都会奏效。毕竟,当定义'scripts.js'在'jquery.js'之前执行时,我希望'$'是未定义的。
对此事的一些启示将不胜感激!
谢谢, 吉尔特-扬
答案 0 :(得分:0)
通过head.js
文档,ready
方法将触发:
加载所有脚本后 该文件是可编写脚本的
因此,无论包含顺序如何,head.ready
中的代码都应该正常。