2013-03-29 37 views
1

所以在我的TODO应用程序中,我使用了Backbone和require.js。一切都很酷。我将所有模型,视图,集合分隔为单个文件并使用require.js加载它们。在我尝试使用控制台require.js优化器r.js将所有文件加入到一个文件之后。当我结果我得到一个文件与我所有的库和类。但是,当我尝试运行我遇到错误,骨干未定义。我检查了文件,并看到r.js产生下一件事: 1.首先它增加了骨干源APP-built.js文件,并放在旁边串后Backbone.js和Require.js工具r.js

define("lib/backbone", function(){}); 

因此,作为结果我都在骨干变量窗口,但在我的模块中使用它require.js方式 define('models/todo',['jquery','underscore','lib/backbone'],function ($, _, Backbone) {

没有全局和结果在我的模块骨干局部变量是未定义的。 与underscore.js相同的问题。 R.js以同样的方式导入它。

所以问题。如何避免将来使用其他库的问题,或者现在如何解决这个问题? SOme工艺?

+0

这部分我不清楚: “没有全球”。你可以改写或扩大这个吗?也许是一个错字。 – explunit

回答

1

您可能需要使用Shim,因为根据RequireJS的Backbone预计Backbone将位于基本url目录中。在你的情况下,它似乎是在/ lib中。 Config Shim。根据您使用的RequireJS版本,您只需确保您使用的库与AMD兼容。

在你requireJS配置:

shim: { 
    backbone: { 
    deps: ["underscore", "jquery"], 
    attach: "Backbone" 
    }, 
    underscore: { 
    attach: "_" 
    } 
} 
相关问题