2012-04-12 51 views
7

我下載了sample-projectlatest-releaseRequireJS。他們的documentation implies加載的任何東西都被傳遞到相關函數的參數列表中(按照相應的順序)。爲什麼不將RequireJS傳遞給函數別名?

所以我決定嘗試它......但它似乎並沒有工作!

  • Firebug(網片)顯示jQuery爲被加載:所以RequireJS obvioulsy這樣做,部分成功
  • Firebug(控制檯選項卡)顯示 '$不是一個函數'

我的問題是:爲什麼沒有填充別名?

我的代碼如下所示:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

    <script src="Scripts/require.js" type="text/javascript"></script> 

    <script type="text/javascript"> 

     require(["scripts/jQuery/Core/jquery-1.7.2.min"], function ($) { 

      // jQuery is not passed-into the function, so the alias fails! 
      $(function() { 
       var stop = ""; 
      }); 
     }); 

    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    </form> 
</body> 
</html> 

THIER樣例如:

//Inside scripts/main.js 
require(["some/module", "a.js", "b.js"], function(someModule) { 
    //... 
}); 
+1

Bueller? Beuller? – 2012-04-13 11:50:19

回答

16

的jQuery應通過專門的名字 「jQuery的」 載,否則它贏得」 t註冊自己(因爲jQuery使用了一個命名定義)。

// create an alias that points to proper file 
require.config({ 
    paths : { 
    jquery : "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min" 
    } 
}); 

// require jquery usign the path config 
require(["jquery"], function ($) { 
    console.log($); 
}); 

這是主要的原因名爲限定被認爲是一種反模式,並在必要時應該只用於(當你有同一個文件內的多個模塊)。

+0

謝謝,謝謝,謝謝,謝謝!這讓我堅強起來! – 2012-04-13 15:20:33

+0

謝謝!唯一的答案,我的工作包括一個獨立的jQuery文件。 – nirazul 2012-12-03 10:17:46

0

您的腳本文件夾是'腳本'還是'腳本'?

您正在提交「Scripts/require.js」以及「scripts/jQuery/Core/jquery-1.7.2.min」的請求。看看Firebug的Net標籤...我敢打賭你在那裏生成一個404。

2

請務必閱讀RequireJS + jQuery示例項目的「README.md」。使用jQuery有很多複雜性,您需要決定在初始設置期間如何最好地解決您的項目。一旦你找出了最適合你的東西並實施它,但它不應該再成爲一個問題。

很多複雜的事情也出自jQuery不是真正的AMD模塊,他們只是在代碼庫中做了一個破解,如果它檢測到定義函數可用。例如,這意味着jQuery模塊名稱將始終爲「jquery」(請注意小寫字母'q'),除非您自己包裝它,所以如果您在配置中爲其定義路徑,則必須具有名爲「jquery」的鍵(再次,用小寫字母'q')或者會有不匹配。當我們首先在我們的項目上設置RequireJS(我們將關鍵字命名爲「jQuery」)時,我們會發現這一點。

+0

我會......謝謝你! – 2012-04-13 15:25:45

相關問題