SitePointAra Pehlivanina最近采访了John Resig。谈了JavaScript库、John Resig得意的几个项目、那本JavaScript高手期待已久但却一再推迟的Secrets of the JavaScript Ninja,还谈了Resig的个人生活。

SP:作为jQuery的创建者,你如何看待JavaScript库之间的竞争,以及它们将来的发展?

Resig:JavaScript都要经历几个循环(从某角度上讲,类似浏览器)。首先是一段时间的竞争,然后是相互合作,最后就是同质化。例如,目前所有库均已实现的CSS选择符引擎,最初竞争的焦点是引擎性能;人们以最有效方式反复实现同一特性,造就了不同实现性能上的差异。然后,不同的库开始合作,就共同支持的选择符集合达成一致,同时也共享提升性能的技术。结果,我们就看到了同质化的代码基——形成一个统一的后台(如Sizzle)。对于库中都存在的其他特性,肯定也要经历类似的循环。

库的最大好处表现在两方面:一是应该帮助用户处理浏览器问题,二是应该为用户提供能够简化开发的API。成功的库必须同时做到这两点。不过,也应该知道,寻求一种统一的库不太可能。毕竟,库与库间的差别主要体现在API,以及如何解决浏览器问题上。让所有库都提供平淡、通用的API,只会导致用户对其反复修补(Turning it into a bland, generic API will only result in a device that users will have to paper over again and again.)。

SP:Sizzle是什么?

Resig:Sizzle是一个新的纯JavaScript写成的CSS选择符引擎。Sizzle是这个引擎的代号,它最终会成为jQuery的新引擎。我希望能有一个高效(至少与其他竞争性引擎相比)、纤小(较小的文件)、容易扩展并且没有依赖性的引擎。

实现这样一个引擎的必要性在于,它很可能被其他一些主要的库采用。我已经跟MochiKitPrototypeDojoTinyMCE团队谈过了,他们都表示对Sizzle的代码基很感兴趣。如果能统一JavaScript中CSS选择符的使用就再好不过了。

SP:你提到的这些库经常能填补JavaScript发展过程中的一些空白,但好像在JavaScript发展方向这个问题上还存在一些争议。比如,Douglas Crockford和Brendan Eich最近就争论过这门语言应该朝更复杂还是更简单的方向发展。你对这个问题有什么看法?

Resig:我并不认为他们的说法相互排斥。他们争论的焦点主要是这门语言的新特性应该使用更小的构建块来构建——这个问题在最近的ECMAScript和谐版公布后基本上就已经尘埃落定了。微软的JScript团队希望以这种方式来构建该语言,我同意;如果有了class{}结构,那么对于使用这门语言的内置方法就能够实现的任务而言,所需的也就只剩语法糖(syntactic sugar)了。始于简单,终于复杂,是一种非常有效的编码方式。

SP:在浏览器对JavaScript1.5之后的特性支持参差不齐的情况下,你认为程序员应该如何面对更多的高级特性?

Resig:对这门语言的高级特性,我并十分担心;我更担心的是HTML5中可能会添加的特性。假如大家抱着实用的念头,而且想现学现用,那么在JavaScript领域中几乎不太可能。但是,由于DOM具有完美的对象检测支持(if (document.querySelectorAll)),因此将来使用这些新特性会很简单。

SP:谈谈你现在手头的工作吧。你网站的项目页面中列出76个项目,其中有没有一两个你认为最令人兴奋的?

Resig:是的,很糟糕——太多了。我比较喜欢,而且认为前景较好的项目是:
env.js——这是一个“把浏览器环境移植到纯JavaScript平台(基于Rhino运行)”的尝试。可以通过它离线运行Web应用程序,包括jQuery、Prototype等库。有不少人已经开始使用它,并将它用于一些应用程序。

processing.js——这是我最近的一个项目,这个项目致力于将processing这个视觉表现语言移植到JavaScript中(基于Canvas运行)。很多人已经认同并使用这种视觉表现来构建游戏、实时视觉特效、图表,甚至艺术作品,而这一切全都通过JavaScript实现。

我的一个长期项目是针对RIT(Rochester Institute of Technology,罗彻斯特理工学院)设计的课程表生成器。在这个应用中,可以插入很多班级,通过计算可以生成所有可能的课程安排。利用这个应用,学生可以设定自己班级的理想上课日程。这个项目从2003年开始运行,至今仍有不少人在使用它

SP:我曾多次听你提到过Fuel,它是什么?

Resig:Fuel是我在2007年加盟Mozilla时想到一个项目。它的目标是简化Mozilla API的复杂程度,方式是在这些API之前添加一个简单的JavaScript层。现在,有很多扩展都在利用这个项目(Firefox 3内置了这个项目),看到它能为开发人员带来好处,我也感到很高兴。

SP:除了与程序有关的项目外,你也是一名作者。你经常更新自己的博客,而且最近又开始为Ars Technica写文章。除了手头的工作外,你还写那么多东西的动机是什么呢?

Resig:我想写一些能够与自己的博客独立存在的文字——换句话说,从更中立的视角去写。Ars Technica是著名的技术网站,而且该网站相对比较中立,内容也很吸引人。为他们写作对自己也是一个挑战,某种程度上会提升自己的写作水平。

SP:对了,你还在写一本新书,名叫Secrets of the JavaScript Ninja。进展如何?

Resig:进展比较慢。过去这几个月我都没有完成写作计划,因此我得往前赶。最乐观估计,应该在明年春天上市。

SP:这本书的目标读者有哪些?适不适合JavaScript新手看,还是更倾向于把有经验的程序员提升到Ninja的层次?

Resig:更适合于有经验的开发人员。对JavaScript新手来说,合适的书已经不少了,不过我仍然感觉当下的市场满足不了读者的需求。

SP:这本书有什么独特之处值得大家期待呢?

Resig:这本书大胆地揭示了跨浏览器开发问题。市面上几乎所有JavaScript图书只介绍了JavaScript在“安全领域”的应用,相当一部分只展示了少量应对bug的方法。一旦深入DOM并直面跨浏览器的难题——所有库都要应对的问题——读者就会发现最耗时的工作在哪里了。

SP:最后,还有两个与工作无关的问题。过去你曾把自己的手机号码作为签名公布于About Me页面中,现在没有了,为什么?

Resig:坦诚地说,没有多少人真正按照我的意愿打我手机。粗略估计,打电话的人中有70%是招聘人员——我必须把他们支到别的地方去;25%在询问关于jQuery的问题,而这些问题通过邮件列表解释效果更好;还有5%的其他问题,应该(至少)要随附一封电邮件才能说清楚。

我仍然会回答大家通过邮件发给我的问题,或者通过IM(根据自己的时间安排解答问题比较好);也就是说,公开自己手机号的结果弊远大于利。

SP:嗯,你又写书、又要经常在不同站点上发表文章(包括你自己的);还要到各种会议上演讲,还得编写许多项目的代码。显然,你非常忙。能否向我们展示一下John Resig的其他方面吗?比如,你有什么业余爱好?你最喜欢什么乐队(band)/电影/游戏/图书/杂志/站点?

Resig:我有一个非常不错的女朋友,Claire,没事的时候我多数会跟她呆在一起。我喜欢看演出(最近看过The Dodos、The Presets和Cut Copy)、参观博物馆,有时候还会跟朋友们一起出去玩。另外,我也是个电视剧迷,比如最近在看True Blood、Dexter、Mad Men,还有It’s Always Sunny in Philadelphia。

当前,我在看几本文笔生动有趣的小说,刚看完一本Watchmen,正在看Batman: The Dark Knight Returns。我也经常一头扎在reddit.com中流连忘返。

我喜欢把自己的工作和个人生活截然分开。我跟朋友们一起玩的时候,脑子里不会想着工作和电脑。那样会非常放松——实际上,我生活中的大多数朋友都对电脑知之甚少。当然,住在波士顿很难拒绝体育赛事,有可能的话,我总会赶上一两场比赛。

谢谢你接受我们采访,John!
我也很高兴,Ara,谢谢你。

原文链接

Tags: ,



朋友们的留言

  1. mymickey » Blog Archive » john新书Secrets of the JavaScript Ninja | 二月 24th, 2009 at 16:15

    [...] 。关于这本书的内容我google了下,以下是sitepoint对他的采访内容: [...]

我来说两句儿


麻烦输入验证码 If you cannot see the CheckCode image,please refresh the page again!