【问题标题】:backbone.js and backbone.modelbinding.js with require.js带有 require.js 的主干.js 和主干.modelbinding.js
【发布时间】:2012-01-13 05:15:03
【问题描述】:

我正在尝试按照我在这里和其他几个地方看到的示例代码来使用 require.js 加载主干/下划线。我基本上已经从Loading Backbone and Underscore using RequireJS 复制/粘贴了示例代码,但它不起作用。

在 app.js 中,alert(Backbone) 显示,Backbone 为空。我不太确定为什么它不存在 - 任何人都可以看到我做错了什么吗?感谢您的帮助。

index.html

<script type="text/javascript" data-main="scripts/main" src="scripts/require.js"></script>

脚本/main.js

require.config({
    paths: {
        'jquery': 'libs/jquery-1.7.1',
        'underscore': 'libs/underscore', 
        'backbone': 'libs/backbone'
    }
});

require([
    'libs/domReady',
    'app/app'
], function(domReady, app){
    domReady(function () {
        app.initialize();
    });
});

脚本/app/app.js

define([
    'jquery', 
    'underscore',
    'backbone'
], function($, _, Backbone){
    return {
        initialize: function(){
            // examples say you can use $, _ or Backbone here
            // but Backbon is null here...  WTF???
            alert(Backbone);
        }
    };
});

以下是我拥有的版本,以防万一这很重要: jQuery 1.7.1 需要.js 版本 1.0.4 下划线 1.3.0 主干版本 0.5.3 模型绑定 0.4.3

【问题讨论】:

  • 您确定您使用的是 Backbone 0.5.3-optamd3?

标签: backbone.js underscore.js requirejs


【解决方案1】:

我们可以查看您的文件结构和文件名吗? 你的主干文件是@libs/backbone.js?还是libs/backbone-0.5.3.js 之类的? 下划线和其他库也是如此,名称必须正确。

【讨论】:

  • (抱歉,换行符似乎在 cmets 中不起作用)谢谢,我基本上摆脱了所有代码,只是为了让它工作,所以我没有应用程序代码或任何东西。我的目录结构如下所示: /index.html /scripts/main.js /scripts/require.js /scripts/app/app.js /scripts/libs/backbone.js /scripts/libs/underscore.js /scripts/ libs/jquery-1.7.1.js /scripts/libs/domReady.js
  • 我并不是要暗示这是正确的答案,但我能够使用此页面上的技术使其工作:backbonetutorials.com/organizing-backbone-using-modules 通过添加“加载器”类和我我正在调用代理文件。当我这样做时,一切正常,但对我来说似乎是一个黑客,我不明白为什么骨干是空的,除非使用这种加载器/代理技术。
  • 好的,代理文件实际上有助于加载非 AMD javascript 文件,所以您确定要包含的主干和下划线是 AMD 版本吗?你用的是什么版本的下划线?这是主干版本吗?:主干0.5.3-optamd3?
  • 啊哈,我刚刚发现了我的问题。从 underscore.js 页面:“升级警告:版本 1.3.0 删除了 AMD (RequireJS) 支持”他们为什么要这样做?
  • 我在github.com/documentcloud/underscore/commit/… 找到了更多关于该主题的阅读 - 在这种情况下使用而不是“代理”的术语似乎是“垫片” - 我不熟悉该术语javascript。看起来如果你想使用最新版本的下划线,那么你必须这样做。
猜你喜欢
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多