【问题标题】:Debugging JS/CoffeeScript code: Events, Callbacks etc调试 JS/CoffeeScript 代码:事件、回调等
【发布时间】:2013-06-02 08:23:42
【问题描述】:

最近我发现很难理解 CoffeeScript/Backbone 应用程序中发生的事情。如果没有非常缓慢的步骤,很难追踪快速发生的事情。我认为的问题是:我知道触发了一个事件(主干视图事件)。但我不知道因为它而调用了哪些函数。可能不止 1 个。我什至可能不知道部分视图是否定义了事件(所以我不能设置断点?)

是否有将程序的执行绘制为图形的调试器?这样我就可以放大我需要的东西,或者可以用来“可视化”我的代码执行的东西。也许不是,如果我应该注意什么。我不确定我需要在哪里放置断点,因为我不知道在哪里触发了某些事件。然后有时我发现很难理解为什么代码单步执行可能会在这里和那里跳跃,也许是它的多个事件和它们的处理程序正在执行?

【问题讨论】:

  • 我认为您可以简单地将所有事件绑定到日志记录回调。快速谷歌搜索:stackoverflow.com/questions/5848598/…
  • @ArnarYngvason,也许你误解了我的问题?或者也许我不明白这将如何解决问题。问题之一是我不知道哪些类/方法正在监听事件。而不是只听一个事件,我听了很多?我认为那个处理程序会很乱?然后多个类/函数仍然可以监听所有事件,这使得它变得更糟、更慢。
  • 我建议它仅用于调试目的,但我可以看到,如果您需要知道哪些方法正在触发特定事件而不是需要知道每个事件触发了哪些事件,它可能对您没有帮助时间。
  • 我想TraceGL 可能是我要找的东西

标签: javascript debugging backbone.js coffeescript


【解决方案1】:

Backbone 中的所有内容(视图、模型、集合、路由器)都扩展了 Backbone.Events。这意味着他们有一个 _events 属性,其中包含每个绑定事件(例如更改)及其订阅者数组。

为了访问它,请在 chrome、firefox 或 safari(或除 IE 之外的任何东西)中打开您的 javascript 控制台,然后输入一个全局可访问的实例化对象的名称,并在末尾加上 ._events。例如

products._events

按回车后,您应该可以展开它并查看发布和订阅的内容。

【讨论】:

  • (为什么IE在这里不起作用?开发者支持..越来越好。)
  • @user2246674 我只是在抨击 IE,如果你喜欢的话,你也可以使用它。但是,IMO 有比 IE 更好的调试工具
猜你喜欢
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
  • 2011-07-17
  • 2013-05-21
  • 2013-03-12
  • 2015-10-29
相关资源
最近更新 更多