【问题标题】:Backbone.js Error Handling - how do you do it?Backbone.js 错误处理——你是怎么做的?
【发布时间】:2011-12-31 00:06:31
【问题描述】:

我想知道人们通常如何使用backbone.js 进行错误处理。每次我调用 model.save(它又调用 Backbone.sync)时弹出一些东西会很好。问题是,backbone.js 如何知道服务器何时发生错误或成功?我知道它会知道是否有 500 服务器错误或类似的东西(jquery 知道,因为 Backbone.sync 调用 jQuery.ajax) - 但我希望能够传递消息和其他代码,以便我可以给出更有意义的错误给用户的消息。

我有一个想法,希望得到一些反馈。这个想法是覆盖 Backbone.sync。新同步从服务器获得响应,该响应必须采用特定格式。这种格式类似于:

ServerResponseObject:
  > ResponseCode
  > Message
  > Model

没什么花哨的,但基本上,它不是只返回普通模型,而是用 ResponseCodeMessage 包裹起来,可以显示给用户。

这是正常的做法吗?还有其他更好的方法吗?

谢谢!

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    在我看来,这听起来有点复杂,至少一开始是这样。 Backbone.sync 将报告您可以在模型中捕获的错误.save() 方法:

    this.mymodel.save(/* ... */, {success: function(model, result, xhr)...,
                                  error: function(model, xhr, options)...}
    

    (docs).

    如果您的服务器端遵循HTTP specs 很好,则错误代码已经提供(500 - 服务器错误,404 - 找不到模型,你知道..),即使服务器发送一个错误代码它仍然可以发送内容(非常适合您的消息)。因此,您基本上已经将所有参数都内置到 HTTP 协议本身中。根据我的经验,如果您使用协议而不是在其之上构建新层,您可以编写更少的代码。

    在您上面的errorcallback 中,您可能很有可能调用系统的其余部分并将错误发布到某些应用程序消息总线或类似的(通过Backbones 自己的事件机制或某些dedicated library)。

    【讨论】:

    • 感谢您的回复。我认为您是对的...不需要我的方法。我会将 HTTP 错误代码编入我的服务器端。幸运的是我问了!
    【解决方案2】:

    不久前我们切换到发回标准格式JSend。它基本上只是一个围绕响应的 JSON 包装器,除了您期望的数据之外,还提供了消息和错误代码返回的规定。

    我们不得不这样做的主要原因是我们的服务在响应 400 错误时确实不合适。客户端根本没有格式错误的语法或任何协议级别的错误,只是有些问题需要我们做出更细微的响应,这给了我们。在我们这样做之后,每个人最终在客户端和服务器端都变得更加快乐。

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 2013-02-23
      • 2020-08-13
      • 2012-08-27
      • 1970-01-01
      相关资源
      最近更新 更多