【问题标题】:Should I use the Underscore-compatible build of Lo-Dash when using it with BackboneJS?与 BackboneJS 一起使用时,我应该使用与下划线兼容的 Lo-Dash 构建吗?
【发布时间】:2013-06-17 22:30:31
【问题描述】:

我注意到 Lo-Dash 有一个特殊的 Underscore 兼容构建,表面上是为了解决函数参数/操作的差异(由于 Lo-Dash 是 Underscore 的超集,我假设 Lo-Dash 中没有缺少 Underscore 函数) .

我还注意到 BackboneJS 可以与 Underscore 或 Lo-Dash 一起使用。

我的问题:将 Lo-Dash 的“正常”构建与 BackboneJS 一起使用是不明智的吗?我找不到任何迹象表明人们是否在野外这样做,但这似乎是个坏主意,特别是如果 BackboneJS 依赖于这些构建中可能不同的功能。同时,在 Lo-Dash 中使用一些较新的功能会很好,所以如果没有必要,我不想错过这些功能。

【问题讨论】:

  • 我也在想同样的事情。 Lodash 添加了很多有用的“简单”内容,例如_.isPlainObject()。在 lodash github 问题跟踪器上可能值得一问。

标签: javascript backbone.js underscore.js lodash


【解决方案1】:

[edit] 个人使用 lodash 一段时间后的经验,我发现差异不是太大。我建议您使用普通版本,但如果您不想冒任何风险,请使用兼容版本。


要知道答案,请参阅此 wiki 页面,该页面总结了下划线 Lo-Dash 构建和普通 Lo-Dash 之间的区别:

https://github.com/lodash/lodash/wiki/build-differences

Underscore 构建(包括 Backbone 构建,它是 Underscore 构建的子集)

  • Lo-Dash 的直观链接被 Underscore 的显式链接样式取代 _.chain 方法仍然存在,如果您想使用它。
  • 如果回调返回 false,_.each 方法不会提前退出
  • _.defaults_.extend 方法迭代源对象的继承属性
  • _.contains_.omit_.pick_.template 等方法中删除了额外的功能

【讨论】:

  • 那么答案是什么?主干.js 是否适用于普通的 Lo-Dash 构建?我不明白我应该如何从你在这里提供的信息中推断出来。
  • 如果您使用的是普通的 lodash 构建,请确定您是否依赖上述功能。我建议您DO 使用普通版本,但如果您不想冒任何风险,请使用兼容版本。
【解决方案2】:

我通常建议先尝试 Lo-Dash。如果您有问题,您可以返回到 Underscore 兼容版本。这适用于新项目或已经使用 Underscore 并想要更改的项目。

您还可以利用构建实用程序创建一个使用下划线链接样式的 Lo-Dash 版本,例如 lodash -d plus=chain

【讨论】:

【解决方案3】:

我个人使用 require.js 来加载下划线/lodash。因此,在我的应用程序主干中,只要我使用 AMD 传递“_”,它就不知道它是下划线还是 lodash。

我开始使用 lodash 只是因为,我读到 lodash 有更好的性能。我敢肯定,如果你用谷歌下划线与 lodash 性能对比,你会发现。到目前为止,我还没有看到 lodash 中缺少任何功能。

无论如何,我有幸将其改回使用下划线,并在“Require”配置文件中更改一行代码...

【讨论】:

    猜你喜欢
    • 2018-05-18
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多