用require.js尝试模块加载(AMD)时出错

在这一点上,我对requirejs感到有些沮丧。

我试图在我的App.coffee文件中加载jquery和其他库。 问题是我无法在我的定义中加载模块依赖关系。 一些输入参数(jq,jsn等)为null或仅仅是HTMLDocument对象。 这个改变基于我尝试插件的排列:'order','domReady',或者没有。

我的js lib目录看起来像A)。 我的App.coffee文件看起来像B)。 我试过在require.config中使用'paths',只是使用原始文件引用(你在下面看到)。 我知道requirejs-jquery集成。 但我不应该能够订购我的插件加载?

如果我尝试命名'路径',我会得到一组不同的错误。 我看到有人建议jquery 1.7(也在这里)。 这管用吗? 我首先想退后一步,确保我的概念正确无误。 i)require.config ii)模块定义w /依赖关系,iii)订单插件等

如果我正确地将这些概念解决了,我会认为这是一个jQuery版本问题。 但是,这不仅仅是jQuery的依赖。 以这种方式浪费时间令人难以置信的令人难以置信。 任何帮助表示赞赏。 提前致谢。

一个)


    $ 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
    )


最新的jQuery支持AMD加载器,并且在require.js中表现良好。 Underscore和Backbone不会,你需要:

  • 使用修改后的版本,例如require的作者。
  • 使用插件。 我找到了使用! 从这里插件来完美地满足我的需求。

  • 感谢这方面的指导。

    但是我去了jquery-1.7,但仍然不得不从全局空间拉出来获取对象。 这适用于我现在的其他库,以及它们的依赖关系。 我最终做的是返回一个包含依赖关系的对象。 我使用订单插件完成了图书馆加载。

    将依赖对象的合约传递到您的回调函数(jq,pur,jsn等)中,对这些库不起作用。 它适用于我定义的模块(例如:models),但不适用于外部库。 我尝试了使用插件,但发现它不适用于下划线和主干,或者我没有正确设置它。 这是我现在可行的解决方案; 尽管我不得不说头痛严重混淆了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()
        )
    
    
    链接地址: http://www.djcxy.com/p/92513.html

    上一篇: Error trying module loading ( AMD ) with require.js

    下一篇: Using requirejs with dojo 1.9.1