BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

《JavaScript语言精粹》作者Douglas谈Web开发、jQuery和WebKit

| 作者 彭超 关注 0 他的粉丝 发布于 2013年2月18日. 估计阅读时间: 9 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

JavaScript在如今的Web领域正发挥着无与伦比的重要作用。但它又是一门饱受误解与非议的语言。这其中很大程度的误解来源于它奇怪的历史,和它的命名 —— 国内常有人戏称,Java和JavaScript的区别,就像雷锋和雷峰塔的区别。而Douglas Crockford,做为JavaScript语言的泰斗,同时也是QCon北京2013大会确认参会的国际嘉宾,在去年年底,接受了《German-language PHP Magazin》编辑Wießeckel的采访,发表了他对 JavaScript、jQuery 、CoffeeScript、Dart语言、Web的历史,以及移动互联网等内容的真知灼见。

编者后注:2月13日,Opera宣布将使用WebKit作为自己浏览器的新内核,在网络上掀起不小的波澜,而Douglas在这篇去年的访谈里就已经很有预见性的谈到了WebKit的胜利,同时还肯定了jQuery等框架的工作,实在令人折服。

关于Opera切换到WebKit引擎的决定,InfoQ做了系列报道,请见:

下面是Douglas的采访内容:

作为《JavaScript语言精粹》(《JavaScript:The Good Parts》)的作者,在谈及它的“bad parts”,甚至是“worst parts”时,Douglas表示:

最坏的部分是JavaScript的依赖关系和全局变量。我们在浏览器中看到的各种安全问题全是这两个部分引起的。

对于CoffeeScript,Douglas这么看:

CoffeeScript是一种可被编译成JavaScript的新语言,它把JavaScript当作一种可执行语言。CoffeeScript的语法简洁优雅,非常可爱。我希望JavaScript可以像CoffeeScript一样。不过我并不推荐CoffeeScript,因为它仍然处于实验阶段,而我不想在生产环境中冒险。但是对于自己感兴趣的小项目,用CoffeeScript是挺不错的选择。但是需要注意,CoffeeScript的唯一优势只是语法,它的语意和JavaScript完全一样,没有什么你能用CoffeeScript能行而JavaScript不行的事。只是在很多时候CoffeeScript写法会更加方便。

谈到jQuery的时候,Douglas表示了非常肯定的态度:

jQuery非常棒。它运行在DOM的顶层,直接调用浏览器为JavaScript提供的API。DOM本身非常糟糕,是我见过的最烂的API。而JavaScript是一门强大的语言 —— 只需要一个相对小体积的JS库就可以将DOM变得非常有用,jQuery实现了这一点。Yahoo!的YUI从这方面看来并没有做的更好。我会建议所有人使用一种JS库来操纵DOM,而不要使用原生API,因为那的确非常痛苦。库的使用不但会让事情变得愉悦,也会提高工作效率。

对不同的JavaScript引擎,比如V8、JaegerMonkey,Douglas表示:

其实这都没什么关系。JavaScript是一项有超强移植性的语言,在不同的JavaScript引擎表现的并没有太多差别,这些引擎其实都挺不错。Microsoft的引擎(Trident)表现的也挺好。这是JavaScript的优点之一。值得一提的是,Microsoft还花了不少功夫让Web工程师可以在Windows8的桌面端创建WebApp,这看上去也还不错。

对Google发布的用于取代JavaScript的Dart语言,Douglas肯定了尝试新语言的行为,但是对这门语言本身,他持保留的看法:

JavaScript的确有很多问题,但JavaScript不会是最后一门编程语言。我鼓励大家在新编程语言上的实验。因为对于程序员来说,编程语言是最重要的创作工具。但其实我们很明显还没有把JavaScript了解透彻,而JavaScript自己也并没有表现的足够好。所以我们需要继续新编程语言的实验。我也很高兴看到这些新语言的尝试。但对于Google Dart来说,问题在于他们甚至还未完成语言的设计工作,就已经宣称胜利了。Dart对我没有意义。Google应当为尝试新语言的行为获得表扬,但是取代JavaScript看上去更像是一个阴谋,但看起来又不太可能。

对JavaScript过去多年的恶劣名声,以及最近一些年的迅速崛起,Douglas回顾了整件事情的历史:

这都是因为Ajax。在2001年的时候,Gartner预测Web将像WAIS和Gopher那样死去,Web将会被Ex-Internet取代,包括Microsoft在内的许多人相信这种说法。所以Microsoft扩张了IE团队,并开始着手研究下一代英特网。

在2005年,Jesse James Garrett发表的关于Ajax的论文所有人大吃一惊。Microsoft突然间又被Web打了个措手不及。可能因为浏览器在安全问题上表现的还不错,用户在面对Web应用的时候不至于总面对恐怖的,不知所以然的权限提示对话框,加之Ajax的能力,Web开始发挥起它的威力。它比其他任何平台都更容易的将应用传递到客户端。由此,Web开始腾飞。

Web火热发展的另一个原因,是除Web以外的其他尝试都失败了。过去曾有很多试图取代Web的尝试。Adobe尝试了很多次,Microsoft也是。Google如今仍在努力。但迄今为止他们都失败了。Java曾被认为最可能去统治Web,但Java失败了。之后Java又去尝试接管消费电子设备和其他场景,但是也都不怎么成功。在移动电话终端上,他们几乎试遍了所有的方法。他们试过专利,试过开源,但他们都没能成功。

现在人们正努力将JavaScript运行在移动平台,看起来好像挺不错。这并不是任何人希望或预言的,但事情就这么发生了。JavaScript正在胜利,因为它凑效了。同时,JavsScript的流行让其它只能勉强运行的方式显得又傻又非主流。

对于移动互联网的应用入口之争,和将Web构建为OS平台的FirefoxOS,以及WebKit的话题,Douglas认为:

Web看起来正在占领移动互联网,但是一切并未尘埃落定。这是一场比赛:各种App Store正在试图取代Web,他们在用垄断的方式控制所有应用的入口。但Web的哲学之一是“人人平等”。垄断的方式会胜利吗?我认为最终开放一定会赢得胜利,因为大家可以从每个人都自由交付应用的系统中获得更多好处。但是总有一股力量在试图封闭它,比如DRM,所以让我们关注事情将会如何发展,并一起希望Web的开放性会保持下去。

FirefoxOS并不会成为一个大事件,因为看上去移动平台上Web的胜者会是WebKit。Mozilla曾做过不错的东西,而WebKit做的更好。但我希望市场可以保持一种竞争环境,而不要有一个绝对的胜利者出现。所以我希望Mozilla可以更强大。

Web的困境之一在于它从不属于任何一家单独的公司:它不源自Adobe,也不源自Microsoft,也不是Sun或者Oracle。开发者必须处理Web平台上各种不同的因素,而这些不同的因素不但没有消减,还越来越多。同时,W3C标准也还非常不充分。这让开发者们的日子很不好过。但我并不想为此走另一条路,说“好吧,有个统一平台就好了”这样的话。因为相比之下,平台的多样化是整个生态系统健康的表现,如果失去这样的多样性,那必然会是一件坏事。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

Yahoo!的YUI从中一方面看来并没有做的更好 by 臧 秀涛

从中一方面-->从这一方面?

Re: Yahoo!的YUI从中一方面看来并没有做的更好 by 臧 秀涛

JavsScript的流行 -->JavaScript

Re: Yahoo!的YUI从中一方面看来并没有做的更好 by 臧 秀涛

在对不同的JavaScript引擎-->在对比不同的JavaScript引擎时

Re: Yahoo!的YUI从中一方面看来并没有做的更好 by 姚 琪琳

CoffeeScript的语法很优雅简介-->CoffeeScript的语法很优雅简洁

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

4 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT