2013-04-12 76 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