2013-05-10 102 views
0

我想要給文件夾結構here使用require.js加載JavaScript庫

區別在於我正在使用這些庫的所有最新開發版本。但是,他們沒有正確上傳,甚至jquery。我無法理解AMD兼容的意思。

我只是下載了這些庫。這是否意味着它們不兼容AMD?是否有單獨的AMD兼容版本的這些庫?我們是否需要使用shim config來加載非AMD兼容?

我害怕使用墊片,因爲require.js官方文檔說它不被推薦。

回答

1

我找不到任何提及的shim在文檔中是「不推薦」的;我不會太擔心這件事。這是一種經過充分測試並且日益流行的將不符合AMD標準的庫與RequireJS進行橋接的方法(以前,唯一的方法是構建一個包含在定義調用中的專用AMD版本;這會使圖書館維護人員付出額外的努力) 。

如果「最新開發版」你的意思是jQuery的預發行版本,它看起來像它確實支持AMD(看看下載頁面的pre-release section,向下滾動至最底部source code file:你會看到與AMD代碼)

Backboneunderscore需要在任何情況下墊高,因爲它們是AMD無關,所以沒有從它(這兩個特定庫即使在shim config option documentation example使用,這樣就可以逃脫只是重用)。

2

@ kryger的權利,jQuery是AMD兼容的,墊片非AMD模塊沒有錯。

AMD兼容只是意味着該模塊符合AMD specification;因此它輸出它的功能。例如:

define(['jquery', 'underscore'], function ($, _) { 
    // function body 
}); 

所以在函數體,上面:

  • 您可以通過$參數訪問jQuery的;但
  • 下劃線不會自行輸出給AMD,所以_參數將爲undefined

一些AMD兼容模塊(如jQuery的)也行「獨立」,如在一個HTML標籤<script>,他們將在那裏出口到全局命名空間(例如window.$)。

我認爲jQuery的還是出口全球$當您通過AMD加載器加載它,所以你可以只在您的入口點/加載的jQuery一旦第一需要的時候它總是訪問全局$(而不是定義$參數)。另外,如果你使用jQuery插件(修改全局的插件),它可能會讓你感到困惑!