gpt4 book ai didi

backbone.js - 将 Coffeescript Underscore.js 和 Backbone.js 放在一起

转载 作者:行者123 更新时间:2023-12-05 00:35:16 25 4
gpt4 key购买 nike

TLDR; http://jsfiddle.net/squarism/zaVrE/

我是 Backbone.js 和 Underscore.js 的新手(我相信下划线包含在 Backbone 中)。我在 Rails 应用程序中使用它,但那一点无关紧要。我正在关注关于 Backbone 的 Railscast 两集。我正在尝试理解下划线、主干、coffeescript、调试和每个人的文档。更令人困惑的是 Underscore API 和 coffeescript 版本之间的差异。

例如:我有一个用户对象数组作为“条目”。每个人都有一个获胜者属性。所以这将起作用:

# why does this return everyone?
non_winners = @select(entries) ->
@get('winner') == false

所以这里发生了很多事情。 @select 来自下划线。 @get 来自主干。所有这些都是 CoffeeScript 。将其转换为 JS 调试行有点疯狂。最终,尽管我确实弄清楚了 Backbone 之外的 javascript 来测试它。我的问题是文档:

文档说:
filter_.filter(list, iterator, [context]) Alias: select 

我不知道怎么读这个。我刚刚调用了 @select ,我认为它等同于 .select() 但我没有给它一个迭代器。在浏览器控制台上的 Javascript 中,它只返回一个包含获胜者为 false 的对象的数组。在我的应用程序中,如果我使用 console.log(non_winners),它会给我所有人,但 console.log(non_winners.length) 符合我的预期(即:如果我有一个获胜者,那就是 1)。在我学习的时候,这种差异真的很令人困惑。
entries = [
{ name: 'Joe', winner: false },
{ name: 'Bob', winner: false },
{ name: 'Henry', winner: true }
]

# here's an example from my app
#non_winners = @select (entries) ->
# @get('winner') == false

# here's an example from the API
#evens = _.filter [1..6], (num) -> num % 2 is 0

# here's something that works
non_winners = _.select entries, (entry) ->
entry.winner is true

我发现一些令人困惑的事情:
  • 人们如何真正调试这种疯狂的组合。 Coffeescript、Underscore、Backbone,天哪!在我明白一切之前,我想玩它。 JSfiddle(下)很好,但有没有希望使用浏览器控制台?
  • 您如何将这个@select() 业务(@ 是coffeescript 的自我别名正确,它指向Backbone 集合?)转换为underscore 的_.select() api 文档?论证的顺序不同。
  • 在上面的例子中(以及下面的 fiddle ),只返回一个人。但是在我的应用程序中,所有的人都返回了。
  • 我可以让一个人在 fiddle 中返回,但语法与 railscast (#323) 中的示例不同。
  • 在 fiddle 中工作的代码仍然与下划线 API 文档不匹配。我想学习如何阅读下划线文档(学习钓鱼与单鱼等)。

  • 您可以看到这一点:
    http://jsfiddle.net/squarism/zaVrE/

    最佳答案

    从 fiddle 中不清楚您的实际代码中的问题是什么。我认为这里的主要问题是@get('winner')相当于this.get('winner') .您正在调用集合方法而不是入口方法。 @只是 this 的替代品(或 this. 在函数的情况下)。你的代码应该是

    non_winners = @select (entry) ->
    entry.get('winner') == false
    _只是一个带有一堆方法的对象(包括 select )。 Backbone.js 集合对象恰好包含下划线方法。

    就调试而言,绝大多数时候将浏览器中的 JS 映射到 CoffeeScript 代码是微不足道的。有时,由于缩进不对齐或缺少括号,JS 输出不是您所期望的。这也很容易调试 - 只需查看 JS 输出。

    Underscore.js 和 Backbone.js 只是简单的 JS 库,因此您可以检查(或调试)它们的代码。它非常干净和简单。

    关于backbone.js - 将 Coffeescript Underscore.js 和 Backbone.js 放在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9673242/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com