2013-08-06 61 views
1

我不確定我是否正確使用head.js。在我的HTML文檔的頁眉我打電話通過head.js文件:使用head.js以正確的順序正確加載腳本和依賴項?

<script src="/scripts/head.min.js" type="text/javascript"></script> 

然後關閉< /身體前右> HTML頁中的標記,我調用以下文件:

<script src="/scripts/load.js" type="text/javascript"></script> 

在load.js文件我有以下代碼:

head.js(

    {livechat: "/scripts/livechat.js"}, 
    {jquery: "http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"}, 
    {jquerytools: "http://cdn.jquerytools.org/1.2.5/full/jquery.tools.min.js"}, 
    {slider: "/scripts/jquery.nivo.slider.pack.js"}, 
    {prettyphoto: "/scripts/jquery.prettyPhoto.js"}, 
    {sliderfunctions: "/scripts/slidercode.js"}, 
    {functions: "/scripts/functions.js"} 

); 

難道上面的代碼引起的JavaScript文件以它們列出的完全相同的順序執行,還是他們有時執行了鄰刻申?

我問,因爲滑塊最初只有當我使用load.js內將以下代碼運作:

head.ready("slider", function() { 
    $('#slider').nivoSlider({ 
     effect:'sliceDown', 
     controlNav: false 
    }); 
}); 

我通過上面的代碼移動到一個名爲外部文件slidercode.js來解決這個問題其中載有下列代碼:

$(window).load(function() { 
$('#slider').nivoSlider({ 
     effect:'sliceDown', 
     controlNav: false 
    }); 
}); 

但我不知道如果我要對這個正確的和最有效的方式,因爲這是使用head.js.我第一次基本上從loader.js中的JavaScript文件我需要確保:

  1. jquery加載第一。
  2. 一旦jquery已經完全加載然後jquerytools加載
  3. jquery完全加載後,它應該加載滑塊首先,然後prettyphoto。
  4. 然後sliderfunctions應該加載,因爲它依賴滑塊,
  5. 最後,函數應加載,因爲它依賴於jquery和jquerytools。

回答

1

你應該這樣調用腳本:(刪除HTTP爲好,它不需要另外的Jquery總是首先加載任何腳本在這種情況下headJS具有優先權,然後jQuery的,那麼所有你的腳本。)

<script src="/scripts/head.min.js" type="text/javascript"></script> 
// this loads asyncrounously & in parallel 
head.load("//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js", "//cdn.jquerytools.org/1.2.5/full/jquery.tools.min.js", "/scripts/jquery.nivo.slider.pack.js", "/scripts/jquery.prettyPhoto.js", "/scripts/slidercode.js", "/scripts/functions.js"); 

然後關閉</BODY> HTML頁中的標記,我調用以下文件的前面:

<script> 
head.ready(function() { 
     // some callback stuff 
     $('#slider').nivoSlider({ 
    effect:'sliceDown', 
    controlNav: false 
}); 
    }); 
<script> 
0

難道上面的代碼導致的javascrip t文件執行在相同的 他們列出的確切順序或他們有時執行不按順序?

是的,他們加載異步,但按順序執行。

我認爲head.ready("slider", function() {});也應該工作,即使你把它放在load.js之外。嘗試在load.js腳本塊後添加它。