2013-04-12 119 views
0

當我嘗試將require js應用到我的代碼時,我得到的骨幹是undefined錯誤。我已閱讀網站上的其他文章,聲稱使用墊片並沒有解決問題。要求js和骨幹

幫手/ util.js中:

require.config({ 

waitSeconds: 10, 
paths: { 
    "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min", 
    "underscore": "http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.6/underscore-min", 
    "backbone": "http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min" 
}, 
shim: { 
    jquery: { 
     exports: "$" 
    }, 
    underscore: { 
     exports: '_' 
    }, 
    backbone: { 
     deps: ["underscore","jquery"], 
     exports: "Backbone" 
    }, 
    app: { 
     deps: ["backbone"], 
     exports: "App" 
    } 
} 

}); 
require(["Scripts/jquery.flip.min.js"]); 
require(["Scripts/jquery-ui-1.10.2.custom.min.js"]); 
require(["Scripts/RatingProviders.js"]); 

main.js:

require(["helper/util"], function(App) { 
    //Models 
    TestProvider = Backbone.Model.extend({ 
     defaults: { 
      ID: '', 
      Name: '', 
     }, 
     initialize: function() { 
      this.ID= ''; 
      this.Name= ''; 
     } 
    }); 
}); 
+0

那麼,helper/util.js文件的內容會很有幫助。 – Loamhoof

回答

2

我的猜測是,你從來沒有真正require骨幹。

嘗試要求它這樣的:

require(["helper/util", "Backbone"], function(App) { 
    //Models 
    TestProvider = Backbone.Model.extend({ 
     defaults: { 
      ID: '', 
      Name: '', 
     }, 
     initialize: function() { 
      this.ID= ''; 
      this.Name= ''; 
     } 
    }); 
}); 

沉配置指示loader怎麼辦時,骨幹是一個模塊的要求的一部分,但並不是真正的AMD模塊。

2

總而言之,您的文件沒有多大意義。這裏你是定義一個類,所以你應該使用define函數。

define(["helper/util"], function(App) { 

你沒有使用App變種,所以我們將其刪除:

define([], function() { 

現在,我們希望包括骨幹網(見Nirazul的爲墊片解釋的答案),以確保它已加載。此外,骨幹將是一個全局變量,所以你不需要在參數列表中聲明它:

define(['backbone'], function() { 

現在,你必須回到你的新類:

return TestProvider = Backbone.Model.extend({ 

而且,你的jQuery插件,你也可以改變一些東西。首先,在require.config中聲明它們(指定jQuery作爲shim中的依賴項)。然後,將它們作爲依賴項添加到需要它們的任何類中。這樣,當你真正需要它們時,你會異步加載它們。

+0

我猜想的目的是提供一個例子來測試require-functionality。當然,它可能是其他... – nirazul

+0

@Nirazul你可能是對的,但在我看來,這樣一個例子顯示對requirejs的理解很少。所以我只是提供儘可能多的細節。 – Loamhoof