所以在我的TODO应用程序中,我使用了Backbone和require.js。一切都很酷。我将所有模型,视图,集合分离为单个文件,并使用require.js加载它们。在我尝试使用控制台require.js优化器r.js将所有文件连接到一个文件之后因为我得到了一个包含所有lib和类的文件。但当我试图运行我遇到错误,Backbone undefined。我检查了文件,看到r.js生成了下一件事: 1.首先,它将主干源添加到app-built.js文件中,然后放置下一个字符串
define("lib/backbone", function(){});
结果我在窗口中有Backbone变量但在我的模块中我以require.js的方式使用它
define('models/todo',['jquery','underscore','lib/backbone'],function ($, _, Backbone) {
否全局和我的模块中的结果Backbone局部变量未定义。 和underscore.js一样的问题。 R.js以同样的方式导入它。
那么问题。如何避免将来的其他库存问题,或者现在如何解决这个问题? SOme技术?
答案 0 :(得分:1)
您可能需要使用填充程序,因为根据RequireJS Backbone要求Backbone位于基本url目录中。在您的情况下,它似乎在/ lib中。 Config Shim。根据您正在使用的RequireJS版本,您只需要确保您使用的库与AMD兼容。
在您的requireJS配置中:
shim: {
backbone: {
deps: ["underscore", "jquery"],
attach: "Backbone"
},
underscore: {
attach: "_"
}
}