所以在我的TODO应用程序中,我使用了Backbone和require.js。一切都很酷。我将所有的模型、视图、集合分离到单个文件中,并使用require.js来加载它们。在我尝试使用控制台require.js优化器r.js将所有文件连接到一个之后。因此,我得到一个文件与我所有的库和类。但是当我试图运行时,我遇到了错误,主干未定义。我检查了文件,看到r.js生成的下一个东西:1. 首先,它将主干源代码添加到app- build .js文件中,并在后面放置下一个字符串
define("lib/backbone", function(){});
所以结果我有骨干变量在窗口,但在我的模块我使用它在require.js的方式define('models/todo',['jquery','underscore','lib/backbone'],function ($, _, Backbone) {
No as global and as result in my modules Backbone local variable is undefined。underscore.js也有同样的问题。R.js以同样的方式导入了它。
所以问题。如何避免这个问题与其他库在未来或如何解决这个问题?一些工艺吗?
您可能需要使用shim,因为根据RequireJS, Backbone期望在基础url目录中。在您的情况下,它似乎在/lib中。配置垫片。根据你正在使用的RequireJS版本,你只需要确保你正在使用的库是AMD兼容的。
在requireJS配置中:
shim: {
backbone: {
deps: ["underscore", "jquery"],
attach: "Backbone"
},
underscore: {
attach: "_"
}
}