0

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

我正在尝试在我的 App.coffee 文件中加载 jquery 和其他库。问题是我无法在我的定义中加载模块依赖项。一些输入参数(jq、jsn 等)为 null 或只是 HTMLDocument 对象。这会根据我尝试的插件的排列而改变:“order”、“domReady”或无。

我的 js lib 目录看起来像 A)。我的 App.coffee 文件看起来像 B)。我尝试在 require.config 中使用“路径”并仅使用原始文件引用(如下所示)。我知道 requirejs-jquery 集成。但是我不应该能够订购我的插件加载吗?

如果我尝试命名为“路径”,我会得到一组不同的错误。我看到有人建议使用 jquery 1.7也在此处)。这管用吗?我首先想退后一步,确保我正确地理解了这些概念。i)require.config ii)带有依赖项的模块定义,iii)订单插件等。

如果我正确地理解了这些概念,我会认为这是一个 jquery 版本问题。但是,它不仅仅是 jquery 作为依赖项。以这种方式浪费时间是非常令人讨厌的。任何帮助表示赞赏。提前致谢。

一种)

    $树js/lib/
    js/lib/
    ├── 骨干.js
    ├── 骨干加载器.js
    ├── domReady.js
    ├── jquery-1.6.3.js
    ├── json2.js
    ├── order.js
    ├── 纯.js
    ├── require.js
    └── 下划线.js

二)

    需要.config({
      baseUrl: "/js",
      路径:
        订单:'/js/lib/order'
        jQuery:'/js/lib/jquery-1.6.3'
        json2:'/js/lib/json2'
        下划线:'/js/lib/下划线'
        骨干:'/js/lib/backbone_loader'
        纯:'/js/lib/pure'
    })


    定义(['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、模型)->

        console.log('bkeeping LOADED')

        # 返回一个包含模型的对象  
        型号:型号
        jQuery : jq.noConflict()
        json2:jsn
        下划线:und.noConflict()
        主干:bbn.noConflict()
        纯:纯
    )

4

2 回答 2

0

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

  1. 使用修改后的版本,例如require 作者的版本。
  2. 使用插件。我找到了用途!插件从这里完美地满足我的需求。
于 2012-02-18T10:15:29.513 回答
0

感谢您对此的指导。

但是我去了jquery-1.7,但还是得从全局空间拉取对象。这适用于我现在的其他库及其依赖项。我最终做的是返回一个包含依赖项的对象。我使用order plugin完成了库加载。

被传递到回调函数(jq、pur、jsn 等)的依赖对象的契约根本不适用于这些库。它适用于我定义的模块(例如:模型),但不适用于外部库。我尝试了use plugin,但发现它对下划线和主干不起作用,或者我没有正确设置它。这是我现在可行的解决方案;尽管我不得不说这些令人头疼的问题严重影响了 require.js 的好处。

    定义(['order!js/lib/jquery-1.7',
              'order!js/lib/pure',
              'order!js/lib/json2',
              'order!js/lib/下划线',
              'order!js/lib/backbone',
              'order!bkeeping/models', ]
      (jq、pur、jsn、und、bbn、模型)->

        console.log('bkeeping LOADED')

        # 返回一个包含依赖项的对象
        型号:型号
        jQuery : jQuery.noConflict()
        pure : pur # pure 和 json2 对象仅在其他库中使用。我不需要他们直接
        json2:jsn
        下划线:_.noConflict()
        骨干:Backbone.noConflict()
    )

于 2012-02-18T16:15:13.987 回答