用jQuery的都是傻子?

4 年前

译者注:这篇文章翻译自Are jQuery Users Fools?,该文章引起了大量的讨论,可以看这里这里。下面是全文。

Are jQuery Users Fools?

我们以这个问题开篇:似乎存在一种普骗的看法,使用jQuery的都是傻子。这种说法哪来了,真的吗?

寻根问祖

The JavaScript community wasn’t nearly as vibrant and passionate as it is today.

让我们回头看看,把时间拨到几年前——jQuery问世之前。JavaScript的世界完全是另外一种景象。社区里没有像今天这样的激情和活力。当然那时候存在少数几个类库,比如说Prototype;但是他们并没有像jQuery这样抢大众的眼球,遍布世界。当时,JavaScript是一枚怨声载道的语言。甚至,你不愿意花点时间来学JavaScript没人管你。相反,你就简单的复制粘帖吧,并且祈祷肮脏的JavaScript别玷污了你干净的裤子。

DOM(文档对象模型)

What you mean is, “I hate the DOM API.”

这些复制和粘贴成瘾者(我是其中之一)没有意识到的是,当你说“我讨厌JavaScript,”你真正的意思(你是否意识到这一点)是,“我讨厌的DOM API “。但这种感觉很正常,特别是在那些日子里,那些还要支持IE5的日子里,事情是如此的恶心。浏览器DOM的实现是罪魁祸首,而不是JavaScript语言。事实是我们没有任何的DOM的实现标准。没有标准的结果就是,浏览器厂商们拼尽全力,怎么酷就怎么设计开发浏览器。我们用innerHTML不是因为规范规定 ,而是因为Internet Explorer开发团队就这么决定用它了,其他浏览器厂商整点逆向工程,直接将其实现在自己浏览器里。但是,JavaScript一直都没变。

In fact, many folks, including myself, would go as far to say that, as a language, JavaScript is really quite beautiful.

jQuery

大约就在那个时候,jQuery是非常容易掌握和使用,不像其他类似Prototype等类库然过于复杂,让新人难以理解,于是jQuery成了气候,暴风一般席卷了整个开发社区。实际上,只用jQuery对象你就可以获得任何你想要的东西(讽刺的是,这一点也常常被批评)。

需要选择一个类(class)?简单!jQuery简直就是为设计师而生的,它允许你使用CSS选择器来选择元素,而这设计师早就知道了:

$('#container').addClass('ahh-yeah');

Fun Fact: Technically, though jQuery popularized the idea of a CSS selector engine, it was largely based on work by Dean Edwards.

And then, at some point, the timeline skewed into this alternate reality…

jQuery实在是太简单了。它抽象了复杂的代码和浏览器怪异模式,使得开发者有时间做重要的事情,搭建网站或者开发复杂的应用程序。

jQuery社区飞速发展,jQuery自己也逐渐成熟成型,举世欢腾呀。

突然不知什么时候,在什么地方,如果你骄傲的自称你是一个jQueryer,JavaScript社区里的某些人就刻板的认定你是一个愚蠢的“设计师”(不管你是不是)——你不是一个“JavaScript工程师”。这是怎么回事?JavaScript开发人员不用jQuery?

流行的负担

Everyone has an opinion about the spotlight.

这是很自然的,一旦你流行起来,你就必须接受更多的非议。似乎,每个人对聚光灯下的东西都有自己的看法。你一定听到过对天主教无休止的批评——“他们崇拜雕像。”天主教是唯一有可疑的历史的宗教机构?当然不是,只是因为它过于强大。美国是世界上最强大的国家之一,自然,每个人对它都有意见——“美国人又胖又蠢”。完全不看好的方面,偏偏盯着坏的地方。

jQuery以压倒性的优势,成为世界上最最流行的JS类库。同样,每个人都有意见。我读过无数的批评——从各种它不能做的事情到它的代码结构。然而,也许对jQuery的最大的批评来自于一个简单的事实:使用jQuery的人的JS经验很少,比方说,与MooTools程序员比,很少。但是我认为这种看法很怪异,过于牵强。

The fact that jQuery has many less-experienced users is not its downfall; it’s a testament to its appeal.

用jQuery的不懂JavaScript!

这是我听到的最多的说法。当然再一次证明了jQuery的伟大。很多人学了jQuery之后才去学JS的。这是好是坏,不知已经辩论过多少次。其实,其他领域也有类似的争论。

  • 在没有学习CSS各种的细节之前,设计师们是否应该使用类似于Sass或者Compass这类编译器或者框架?
  • Ruby开发者没学JS直接使用CoffeeScript是否有问题?
  • 是否应该在您学习如何编写一个检测单一浏览器能力之前使用Modernizr?
  • 如果你刚刚学会PHP,就可以使用CodeIgniter么?

我个人觉得,那些认为学习完JS才能继续学习jQuery的人忽略了一件事情:JS和DOM是如此的恐怖。如果你给他们扔个ES4规范过去,他们会得心脏病的,除非他们非常有兴趣成为一个JS开发者。有许多人仅仅只是要给他们的网站加点小效果而已。我们不是太平洋的警察,他们按优先级办事是他们的错吗?显然不是。

JavaScript and the DOM are scary!

以简单的数学打个比方。当你第一次学会了如何2 + 2,你不是以一种标准的方式吧?我没有,我用的是我的手指。我敢打赌,你也是。虽然这个过于简单化,但是jQuery不就是这样的么?它为JS新人提供了一个简单的和令人兴奋的切入点。你真的希望他们了解闭包和对象和全局变量之后,再去做一些有趣的东西吗?不,应该是现在!

这种批评,“ 以正确的方式学习,否则你就是笨蛋 ”的观点很幼稚,并没有考虑到我们都有不同的学习风格。

I view jQuery as bait. Hold it over the user’s head, get them really excited by it, and then, when they feel ready, they almost always move on to learning more vanilla JavaScript.

jQuery用户写的代码一团糟

这又是一概而论。世界上很有影响力的大公司也在使用jQuery。当然,也有很多新人正走在学习的路上。还有,每个语言都有写得像屎一样的代码。我可以自豪的说,我写的还是不错的!我们能做的,不是在公共场合鄙视他们,而是应该给于建议和指导。我们都在学习。就因为他们有不同的优先级和技能选择,我们就真的需要攻击他们吗?

With popularity, comes the potential for bad advice.

jQuery催生出了难以置信,激情澎湃的社区——从JS能手到那些简单使用它就能搞定工作的设计师。这激情使得社区成员贡献了无数的jQuery教程——良莠不齐。虽然我仍然在学习jQuery,但我敢说我曾今提出过一些非常可怕的建议和观点。这不同于PHP社区,由于流行,就会产生拙见。

Ruby社区

This sort of pointless teaching almost hurts the community.

在Ruby社区中,有一个有趣的事情。就是都是一些老同志在写教程。换句话说,如果你打算写一个Ruby on Rails的文章或书籍,你应该经得起大家的评论。如果你没有大量的经验,你不敢写。在某种意义上说,这是一种有益的力量。作为一名初学者,你学得更轻松,因为你学的都是对的。另一面,PHP教程全世界满天飞。有些作者,尽写些芝麻小事,不写重点,你会经常发现宣扬最佳实践 PHP教程,使用单引号和双引号哪个更快。当然,这样没营养的教程只会伤害社区。

你更喜欢谁?

这是一件有趣的的事情,我不得不说。你更喜欢谁?一个热烈的小群体,还是一个非常受欢迎的,包括各种技能水平的大社区?其实他们都有自己的优缺点。

不可否认,我们很多人都自认为要做开拓者。还记得父母是什么时候注册Facebook的吗?那个时候很多评论家都觉得它气数已尽了——一旦你开始牺牲特色吸引更多受众的时候,大家就开始寻找下一个新玩意了。但是,这并没有发生在Facebook身上。jQuery也是如此。确实,有人转移到了其他更加健壮的框架上,比如说Dojo。这是不可避免的,但这也属于jQuery的荣耀。对于大多数人来说,学习周期如下:

  • 开始学习jQuery,兴奋;
  • 意识到在不同的情况下,完全搞不清楚this是什么,于是开始学习JS,同时提高jQuery代码的质量;
  • (有可能)提交技能以便hold住一个全面的框架来构建大型的程序。开始学习额外的工具,如Dojo 。

这是很糟糕的事情?

最后说几句

It’s not like we’re coding in binary here, folks.

有段时间,总是会有人建议你不要使用类库干事情。鉴于当前JS和DOM的混乱现状,老实说,我觉得这是一个不好的建议——尤其是对新人来说。在学习的过程中不应该过早的一头扎进那些令人沮丧的浏览器兼容性里。其次,很多时候,抽象是件好事。童鞋们,我们不是在用字节写代码。当你使用jQuery之类的类库的时候,你得以摆脱无尽的bug和测试,受益于那些同行中天才的脑袋。

现在,并没有人逼着你非使用某个框架,有能力的话你可以写自己的类库。但是我们的目标是:

  • 抽象浏览器的兼容性
  • 少写代码
  • 博采众长
  • 搞定工作

jQuery不是为设计师而生的类库,但是他吸引到了设计师。它并不基于类模式,但是初学者无痛入门。最后我想问,jQuery作为一个大大推动了JS社区的,对于初学者足够简单的并且世界级大公司都在使用的类库,为什么还要受到如此的批评?

原文:Are jQuery Users Fools?

原译文:用jQuery的都是傻子?

0
推荐阅读