【问题标题】:Accessing backbone objects inside requireJS module from console从控制台访问 requireJS 模块中的主干对象
【发布时间】:2012-12-17 19:22:34
【问题描述】:

我正在开发我的第一个大型 Backbone/RequireJS 应用程序,我有一个简单的问题。

当我在页面上打开一个视图并在控制台中时,如何访问我的 Backbone 对象(模型、视图等)的属性。

传统上,在 Backbone 中,我这样做:

 var myApp : {
    models: {},
    views: {},
    etc...
}

使用 require,我不再有这样的全局对象了。我为调试所做的只是在窗口上创建一个新对象,然后我可以从控制台访问它。有没有办法深入研究这个而不必在窗口上创建新变量? (我显然会在生产之前删除这个全局 obj,只是希望保存步骤并直接进入控制台)。

干杯。

【问题讨论】:

  • 哪个浏览器的控制台?
  • 火狐?铬合金?苹果浏览器?没关系。我只是想知道我是否可以通过控制台访问这些对象的当前状态,而无需设置断点(这只能让我访问该上下文中的变量,而不是应用程序范围的变量),或者创建一个临时的全局变量.

标签: backbone.js requirejs


【解决方案1】:

我还没有找到一个很好的解决方案,但这就是我所做的。

如果我只想访问单个模块,我会输入整个 require 拼写:

> require(['models/foo'], function(foo) { window.foo = foo; });
> foo.something();

有时,如果我需要访问多个模块,我会先为 helper 定义一个单行代码

> var req = function(module, name) { require([module], function(m) { window[name] = m; });}

> req('models/foo', 'foo');
> req('models/bar', 'bar');
> foo.something(bar);

如果我需要某个已经存在的实例,我只需在调试器中设置一个断点并使用本地变量,它们在中断模式下在控制台中可用。

我肯定也会对更好的方法感兴趣。

【讨论】:

  • 我希望有更好的方法,但如果没有任何结果,我会将其标记为答案。谢谢 fencliff!
  • @ScottSilvi,是的,暂时保持打开状态。就像我上面提到的,我想知道是否还有更好的方法......
  • 我是骨干和 requirejs 的新手,但这对我来说似乎很疯狂。可以,但是很麻烦。
  • 嗯,这太疯狂了。问题是,无论如何你都不应该在现场直播,所以它没有以简单的方式暴露是有道理的。这里的目的(至少对我来说)是为了测试/调试公开这些属性。无论如何,我切换到 AngularJS,我的生活永远改变了 :)
【解决方案2】:

你试过var m = require('your_module')吗?

我应该工作得很好。

【讨论】:

    猜你喜欢
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多