为什么有人更喜欢Lodash或Undercore.js实用程序库而不是另一个?
Lodash似乎是下划线的替代品,后者已经存在了更长的时间。
我认为两者都很出色,但我对它们的工作原理了解不足,无法进行有意义的比较,我想了解更多的差异。
为什么有人更喜欢Lodash或Undercore.js实用程序库而不是另一个?
Lodash似乎是下划线的替代品,后者已经存在了更长的时间。
我认为两者都很出色,但我对它们的工作原理了解不足,无法进行有意义的比较,我想了解更多的差异。
当前回答
我只是发现了一个对我来说很重要的区别。Lodash的_.extend()的非Underscore.js兼容版本不复制类级别定义的财产或方法。
我在CoffeeScript中创建了一个Jasmine测试,演示了这一点:
https://gist.github.com/softcraft-development/1c3964402b099893bd61
幸运的是,lodash.underscore.js保留了Undercore.js复制所有内容的行为,这对我来说是理想的行为。
其他回答
Undercore.js大部分是Lodash的子集。
有时,就像现在一样,Undercore.js会有Lodash没有的一些很酷的小功能,比如mapObject。这一次为我的项目开发节省了大量时间。
如果像我一样,您期望Undercore.js和Lodash之间的使用差异列表,那么有一个从Undercore.jss迁移到Lodash的指南。
以下是留给子孙后代的现状:
下面的任何一个都是LodashUndercore _.all是Lodash _.every下划线_.compose是Lodash _.flowRightUndercore _.contains是Lodash _.includesundercore_.each不允许通过返回false退出Undercore_.findLodash在哪里_.find默认情况下,Undercore _.flatten为深,而Lodash为浅Undercore_.groupBy支持传递参数(value、index、originalArray)的iterate,而在Lodash中,_.groupBy的iteratee只传递了一个参数:(value)。未定义第三个参数的Undercore.js_.indexOf是Lodash _.indexOf具有第三个参数true的Undercore.js_.indexOf是Lodash _.sortedIndexOfUndercore_.indexBy是Lodash _.keyBy调用的核心是Lodash_.invokeMapUndercore_.mapObject是Lodash _.mapValuesUndercore_.max组合Lodash _.max和_.maxByUndercore_.min组合Lodash _.min和_.minByUndercore_.sample组合Lodash _.sample&_.sampleSizeUndercore_.object组合了Lodash _.fromPairs和_.zip对象谓词下面的省略是Lodash省略下划线_.pairs是Lodash _.to pairs谓词下面的pickBy是Lodash_.pickBy下面是Lodash地图Undercore_.sortedIndex组合了Lodash _.sorted索引和_.sorttedIndexOf迭代者的下划线_.uniq是Lodash _.uniqByUndercore _.哪里是Lodash _.filterUndercore_.isFinite与Number.isFinite不对齐(例如_.isFinite('1')在Undercore.js中返回true,但在Lodash中返回false)Undercore_.matches速记不支持深度比较(例如,_.filter(对象,{“a”:{“b”:“c”}}))下划线≥1.7&Lodash _.template语法为_.templ(字符串,选项)(数据)内存缓存是类似于地图的对象Lodash不支持许多支持_.bind的方法的上下文参数Lodash支持隐式链接、惰性链接和快捷方式融合Lodash将其过载的_头、_尾、_尾和_首字母拆分为_take,take对,drop,和drop对(即Undercore.js中的_.head(array,2)是Lodash中的_.take(array))
他们非常相似,Lodash正在接手。。。
它们都是一个实用程序库,在JavaScript中占据了实用程序的世界。。。
看来Lodash现在更新得更频繁了,所以在最新的项目中使用得更多了。。。
此外,洛达什似乎比几位KBs更轻。。。
两者都有很好的API和文档,但我认为Lodash更好。。。
下面是获取数组第一个值的每个文档项的屏幕截图。。。
Undercore.js:
Lodash公司:
由于事情可能会不时更新,只需查看他们的网站。。。
洛达什牌手表
下划线.js
我不确定OP是不是这个意思,但我遇到了这个问题,因为我在搜索从Undercore.js迁移到Lodash时必须记住的问题列表。
如果有人发表一篇文章,列出这些差异的完整列表,我将非常感激。让我从我用艰难的方式学到的东西开始(也就是说,那些让我的代码在生产中爆炸的东西:/):
_默认情况下,Undercore.js中的.sflat为deep,必须将true作为第二个参数传递,使其变浅。在Lodash中,默认情况下它是浅的,将true作为第二个参数传递将使其变深!:)_Underscore.js中的.last接受第二个参数,该参数告诉您需要多少元素。在Lodash,没有这样的选择。您可以使用.sslice来模拟这一点_.第一期(同一期)_可以以多种方式使用Undercore.js中的.template,其中之一是提供模板字符串和数据并获取HTML(或者至少这是一段时间前的工作方式)。在Lodash中,您会收到一个函数,然后您应该向该函数提供数据。_(something).map(foo)在Undercore.js中工作,但在Lodash中,我不得不将其重写为_.map(somethink,foo)。也许这只是TypeScript问题。
我只是发现了一个对我来说很重要的区别。Lodash的_.extend()的非Underscore.js兼容版本不复制类级别定义的财产或方法。
我在CoffeeScript中创建了一个Jasmine测试,演示了这一点:
https://gist.github.com/softcraft-development/1c3964402b099893bd61
幸运的是,lodash.underscore.js保留了Undercore.js复制所有内容的行为,这对我来说是理想的行为。