此时我对requirejs感到有点沮丧。
我正在尝试在App.coffee文件中加载jquery和其他库。问题是我无法在我的定义中加载模块依赖项。一些输入参数(jq,jsn等)为null或只是HTMLDocument对象。这会根据我尝试的插件的排列而改变:'order','domReady'或none。
我的js lib目录看起来像A)。我的App.coffee文件看起来像B)。我试过在require.config中使用'paths',只是原始文件引用(你在下面看到的)。我知道requirejs-jquery集成。但我不应该order my plugin loading吗?
如果我尝试命名'paths',我会得到一组不同的错误。我看到有人suggested jquery 1.7(also here)。这管用吗?我首先想退后一步,确保我正确地理解了这些概念。 i)require.config ii)模块定义w /依赖项,iii)订单插件等。
如果我正确地理解了这些概念,我认为这是一个jquery版本问题。但是,它不仅仅是jquery作为依赖。以这种方式浪费时间令人难以置信。任何帮助表示赞赏。提前致谢。
A)
$ tree js/lib/ js/lib/ ├── backbone.js ├── backbone_loader.js ├── domReady.js ├── jquery-1.6.3.js ├── json2.js ├── order.js ├── pure.js ├── require.js └── underscore.js
B)
require.config({ baseUrl: "/js", paths: order : '/js/lib/order' jQuery : '/js/lib/jquery-1.6.3' json2 : '/js/lib/json2' Underscore : '/js/lib/underscore' Backbone : '/js/lib/backbone_loader' pure : '/js/lib/pure' }) define( [ 'js/lib/order!js/lib/jquery-1.6.3', 'js/lib/order!js/lib/json2', 'js/lib/order!js/lib/underscore', 'js/lib/order!js/lib/backbone', 'js/lib/order!js/lib/pure', 'js/lib/order!js/bkeeping/models', ] (jq, jsn, und, bbn, pur, models) -> console.log('bkeeping LOADED') # return an object with the models in it models : models jQuery : jq.noConflict() json2 : jsn Underscore : und.noConflict() Backbone : bbn.noConflict() pure : pure )
答案 0 :(得分:0)
最新的jQuery支持AMD加载器,并且使用require.js表现良好。 Underscore和Backbone没有,你需要:
答案 1 :(得分:0)
感谢您的指示。
但我去了jquery-1.7,但仍然不得不从全球空间拉出来获取对象。这适用于我现在的其他库及其依赖项。我最终做的是返回一个带有依赖项的对象。我使用order plugin完成了库加载。
依赖对象的合同被传递到你的回调函数(jq,pur,jsn等),对这些库来说根本不起作用。它适用于我定义的模块(例如:模型),但不适用于外部库。我尝试了use plugin,但发现它不适用于下划线和主干,或者我没有正确设置它。这是我现在可行的解决方案;虽然我不得不说头痛严重影响了require.js的好处。
define( [ 'order!js/lib/jquery-1.7', 'order!js/lib/pure', 'order!js/lib/json2', 'order!js/lib/underscore', 'order!js/lib/backbone', 'order!bkeeping/models', ] (jq, pur, jsn, und, bbn, models) -> console.log('bkeeping LOADED') # return an object with the dependencies in it models : models jQuery : jQuery.noConflict() pure : pur # pure and json2 objects are simply used in other libs. I don't need them directly json2 : jsn Underscore : _.noConflict() Backbone : Backbone.noConflict() )