【问题标题】:Error trying module loading ( AMD ) with require.js尝试使用 require.js 加载模块 (AMD) 时出错
【发布时间】:2012-03-09 11:36:57
【问题描述】:

此时我对 requirejs 感到有些沮丧。

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

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

如果我尝试命名为“路径”,则会收到一组不同的错误。我看到有人suggested jquery 1.7 (also here)。这管用吗?我首先想退后一步,确保我正确地理解了这些概念。 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

B)

需要.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() 纯:纯 )

【问题讨论】:

    标签: javascript jquery backbone.js requirejs amd


    【解决方案1】:

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

    1. 使用修改后的版本,例如 require 作者的 one
    2. 使用插件。我找到了用途!来自here 的插件完美地满足我的需求。

    【讨论】:

      【解决方案2】:

      感谢您对此的指导。

      但是我去了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() )

      【讨论】:

      • 检查我在答案中的链接。在那里设置使用插件将解决您的问题。无需订购!
      • 哦,是的,我在您的回答中看到了这些链接。但也许我只是没有正确设置它。对于 requirejs,我现在只将它用于我的内部模块 (see here)。我发现它对于外部资源来说太麻烦了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      相关资源
      最近更新 更多