2011-06-24 55 views
0

我正在研究headjs(http://www.headjs.com)以加快javascript的加載速度。 從文檔中很顯然可能會控制腳本的執行順序,但是,解析順序是一個不同的問題,並且是afaik,不確定。headjs解析的順序

之前走這條路,我想知道,如果下面將可能產生問題:在平行

負荷的jquery.js和scripts.js中,如:

head.js("//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js","/js/script.js");

腳本。 JS有,除其他事項外,一些功能擴展jQuery的,如:

$.fn.extend({ myMethod: function(){...} });

如果在jquery.js之前恰好加載(和解析)scripts.js,或者只在執行腳本時檢查了'$'的定義,這可能會給解析問題('$'或'jquery'未定義) ? (這不會不給的問題,因爲在scripts.js中jQuery的後執行)

我測試的東西的順序進行了一下,regardsless: 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(); });

不知怎的,我感到很高興它的工作原理,但在同一時間,我仔細相信它每次都會起作用。畢竟,在'jquery.js'之前定義'scripts.js'時,我期望'$'是未定義的。

有關此事的一些亮點將不勝感激!

謝謝, 吉爾特 - 揚

回答

0

head.js文檔的ready方法將火:

所有腳本後,已經被加載並 文檔編寫腳本

所以你無論包含順序如何,head.ready中的代碼應該都可以。

+0

ok我明白,但我的意思是,當scripts.js本身加載(即:在head.ready()被解僱之前),它必須擴展jquery。爲此,jquery.js必須完全加載。所以這個加載順序很重要。或不? –

+0

實際上來自文檔,即使腳本是並行下載的,它們也會按照它們包含的順序進行評估,所以如果'scripts'依賴於'jquery',我會把它放在最後以防萬一 –