Underscore.js和jQuery是否互补?[关闭]


92

我刚开始学习JavaScript,偶然发现Underscore.jsjQuery。Underscore看起来真的很酷,但是我想知道jQuery是否尚未提供类似于Underscore的功能。那么,两者都值得使用吗?


6
他们首页上的第一段说-“这是与jQuery的晚礼服和Backbone.js的吊带一起使用的纽带。”
阿努拉格2012年

12
是的,但是我认为op用“ complement”一词表示的是,由于许多功能重叠,因此这两个框架确实有意义吗?例如,$。each和_.each之间的差异非常细微,足以使任何人在尝试混合使用它们时都感到困惑。
BishopZ

1
如果您喜欢underscorejs,那么您确实应该使用lodash.com
尼尔(Neil)

Answers:


78

来自下划线网站:

这是与jQuery的晚礼服和Backbone.js的吊带一起使用的纽带。

Underscore更适合于数据操作,并将许多Ruby方法引入JavaScript。有一些交叉,但不足以使它们相互排斥。


53
这是一个非常定制西装框架:P
阿努拉格


68
  • jQuery将处理您大部分的dom操作
  • bone.js将帮助您组织所有代码并为js应用程序提供某种结构(mvc模式)
  • underscore.js将为您提供真正有用的低级实用程序。在我真正进入js应用程序之前,我再也不需要此库了(它也是ebrian.js的要求)

39

下划线总共提供60种处理数据/代码的功能。公认许多功能都存在于其他库中,例如jQuery,Prototype或script.aculo.us。例如,jQuery中提供了诸如each,map,find,filter或toArray之类的函数。这些也在Underscore中。这是为了使库独立于jQuery。

何时使用下划线?

当前,它与Backbone.js一起广泛使用,以使用MVC架构来创建一页Javascript Web应用程序。underscore.js最重要的功能是模板功能(jQuery无法做到)。该库具有许多其他有用的功能,这些功能独立于其他Javascript库。

在下面查找Underscore提供的功能列表:

集合: 每个,地图,减少,减少右,查找,过滤器,拒绝,所有,任何,包括,调用,弹起,最大,最小,sortBy,groupBy,sortedIndex,随机播放,toArray,大小

数组: first,initial,last,rest,compact,flatten,无,union,union,intersection,差异,uniq,zip,indexOf,lastIndexOf,范围

功能: 绑定,全部绑定,记忆,延迟,延迟,油门,反跳,一次,之后,包装,合成

对象: 键,值,函数,扩展,默认值,克隆,点击,isEqual,isEmpty,isElement,isArray,isArguments,isFunction,isString,isNumber,isBoolean,isDate,isRegExp,isNaN,isNull,isUndefined

用途: noConflict,身份,时间,mixin,uniqueId,转义,模板


3
嗨,Umesh,由于_.template只是60个Underscore函数之一,这真的足以使其值得吗?
蒂姆·彼得森

@timpeterson,我明白这一点。但是我们不仅使用_.template,而且还有更多函数,例如bind,bindAll,each,map等。我们可以使用尽可能多的函数。
Umesh Patil'4

3
但是绑定,每个地图都在jQuery中,所以看起来很多余,对吧?
蒂姆·彼德森

2
拥有Reduce(jQuery将不会添加)可能本身就值得!
罗伯·格兰特

9

如果您担心重叠,并且不需要诸如JQuery AJAX之类的东西,那么您可以考虑仅使用名为Sizzle的JQuery选择器引擎。

http://sizzlejs.com/

请注意,这并不适用于所有项目,通过使用Sizzle和Underscore,您将失去一些JQuery功能(例如AJAX),您需要考虑特定应用程序的真正需求。


2
projects.jga.me/jquery-builder该工具可以帮助您删除不需要的jQuery代码。此外,Lodash模块可在NPM上使用
DigitalDesignDj
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.