JavaScript是Web的汇编语言(一):语义Web已死!

标签: Web开发 编程技术 翻译 | 发表时间:2011-07-20 20:59 | 作者:为之漫笔 iVane
出处:http://www.cn-cuckoo.com

原文地址:JavaScript is Assembly Language for the Web: Sematic Markup is Dead! Clean vs. Machine-coded HTML

(更新)有些人认为“JavaScript是Web的汇编语言”完全是精神病说的话。为此,我询问了几位JavaScript权威,比如Brendan Eich(JavaScript之父)、Douglas Crockford(JSON之父),还有Mike Shaver(Mozilla技术副总裁)。他们的评论发表在下一篇文章里

昨天我跟Erik Meijer聊天,他说:

JavaScript就是一个汇编语言。JavaScript加上生成的HTML就像是.NET汇编一样。浏览器可以执行这些代码,但没人真的关心里面到底写的是什么。
——Erik Meijer

怎么会说起这件事儿呢?当时我正在试用Google+,就跟上大多数让我印象深刻的网站一样,我立即就查看它的源代码。不看不要紧,一看吓一跳:

咱就将就说吧,我看到了1300行代码,密密麻麻的,大约90KB。上面图片显示的只是最前面的一小部分,基本上都是“瘦身后”的JavaScript代码。再往下看,页面中间呢,全都是像下面这样的span、div以及生成的类和id:

我勒个去,满篇都是GUID(Globally Unique Identifier,全局唯一标识符)。

话又说回来了,http://msn.comhttp://www.bing.comhttp://.www.facebook.com,全都这样啊。就连http://www.twitter.com也都开始有点“瘦身”的迹象了。所有大点的网站好像都丝毫不在乎什么标记之美。这是为什么呢?

这样有效率啊,性能高啊。Google很多最出色的网站背后都依赖GWT呢。在这种情况下,要是这一类网站的里头和外头全都一样漂亮,你反而会觉得不可思议了。

不能不说这可真有点讽刺的意味。曾几何时,ASP.NET的开发人员对ViewState可是怨声载道啊。“简直太笨了”的意思就是“我看不懂它都干什么了。”ViewState曾经(现在也)是一项让Web开发效率提高很多倍的技术。它跟Google Web Toolkit(GWT)不一样,但GWT与WebForms的出发点也并非完全没有相似之处。看看GWT网站自己怎么说:

Google Web Toolkit(GWT)是一个开发工具包,用于构建和优化基于浏览器的复杂应用。GWT的目标是提高高性能Web应用开发的效率,而且无需开发人员熟悉浏览器的各种怪癖,以及XMLHttpRequest,还有JavaScript。

这个出发点可真是值得赞美,不对?难道不可以这样说(抱歉,开个玩笑而已):

ASP.NET WebForms”是一个开发工具包,用于构建和优化基于浏览器的复杂应用。它的目标是提高高性能Web应用开发的效率,而且无需开发人员熟悉浏览器的各种怪癖,以及XMLHttpRequest,还有JavaScript。

本文的目的不是想夸奖WebForms,也不是给WebForms正名。WebForms对于某些应用是不二之选,正如GWT对其他一些应用那样。我真正想说的是,使用服务器端的工具包,没有办法像使用jQuery写出清晰的JavaScript,或者使用Razor或HAML写出清晰、清楚的标记一样,给Web开发带来真正的快乐。归根结底,其实就是你选择的抽象级别的问题。

所谓的语义标记在这种情况下仍然是被隐藏的,而诸如http://schema.org之类的站点也仍然非常重要,只不过可别指望你能在心仪的站点里看到缩进得像俳句一样整齐的源代码。

大家知道,精简和压缩属于正交优化。而我要说的是,一点也不在乎标记和脚本发送到客户端之后是否美观,确实太草率了。假如谁都不在乎发送到浏览器的标记,只在乎结果,那谁的标记和JS就那么不值钱啊,谁还愿意主动公开自己的源代码呢?反正,网站不是运行得挺好嘛,谁还在乎其他的?

现在我要给亲爱的读者提个问题,你觉得自己为什么那么在乎点击“查看网页源代码”之后的结果呢?难道HTML5和JavaScript是Web的新汇编语言不成?

(更新)声明一下:
当然,这个比喻不一定准确。JavaScript代码无论从外观到行为,肯定不像ASM。但作为一个比喻,至少可以说明:

  • JavaScript无所不在;
  • 它速度快而且越来越快;
  • JavaScript酷似低级的Web编程语言;
  • 它可以通过手工编写,也可以从另一种语言编译而来。

作为开发人员或者设计人员,如果有工具提供了你需要的控制和你需要的结果,你最关心哪一个?我认为Rails、ASP.NET,甚至GWT,都没有100%做到这一点。它们都有自己的问题,但我认为将来的Web不会再专注于清晰的标记,而是夺目的用户体验和语言、工具的天下,开发人员会很享受,效率也会更高。

亲爱的读者,你愿意HTML和JavaScript再多抽象一点吗?还是希望它少抽象一点?

(再更新)为了让大家明白,我得再说一遍。本文讨论了两个独立的问题。一个当然就是源代码经过了精简和通常的混淆。但这只是第一个问题。真正的问题在于,JavaScript已经成了其他多种语言的目标语言。GWT是一个用JAVA来写Web应用的框架,它产生的字节码是“JavaScript”。GWT为原来天然的语言(HTML+JS)选择了一个设计好的高级语言,并将整个浏览器当成了一个VM。好,问题来了:我们是在写汇编呢,还是在写某种更高级点的代码?而且,我刚知道Google+是用Closure来写的,但这不影响前面的问题。

相关 [javascript web 汇编语言] 推荐:

JavaScript是Web的汇编语言(一):语义Web已死!

- iVane - 为之漫笔
原文地址:JavaScript is Assembly Language for the Web: Sematic Markup is Dead. (更新)有些人认为“JavaScript是Web的汇编语言”完全是精神病说的话. 为此,我询问了几位JavaScript权威,比如Brendan Eich(JavaScript之父)、Douglas Crockford(JSON之父),还有Mike Shaver(Mozilla技术副总裁).

JavaScript是Web的汇编语言(二):疯狂,亦或只是精神错乱?

- MessyCS - 为之漫笔
原文地址:JavaScript is Assembly Language for the Web: Part 2 – Madness or just Insanity?. 有些人认为“JavaScript是Web的汇编语言”完全是精神病说的话. 为此,我询问了几位JavaScript权威,比如Brendan Eich(JavaScript之父)、Douglas Crockford(JSON之父),还有Mike Shaver(Mozilla技术副总裁).

JavaScript之web通信

- - Web前端 - ITeye博客
浏览器作为 Web 应用的前台,自身的处理功能比较有限. 浏览器的发展需要客户端升级软件,同时由于客户端浏览器软件的多样性,在某种意义上,也影响了浏览器新技术的推广. 在 Web 应用中,浏览器的主要工作是发送请求、解析服务器返回的信息以不同的风格显示. AJAX 是浏览器技术发展的成果,通过在浏览器端发送异步请求,提高了单用户操作的响应性.

全 Javascript 的 Web 开发架构:MEAN

- - 开源中国社区最新新闻
最近在Angular社区的原型开发者间,一种全Javascript的开发架构MEAN正突然流行起来. 其首字母分别代表的是:(M)ongoDB——NoSQL的文档数据库,使用JSON风格来存储数据,甚至也是使用JS来进行sql查询;(E)xpress——基于Node的Web开发框架;(A)agular——JS的前端开发框架,提供了声明式的双向数据绑定;(N)ode——基于V8的运行时环境(JS语言开发),可以构建快速响应、可扩展的网络应用.

提高 web 应用性能之 JavaScript 性能调优

- 去北方-Jack - IBM developerWorks 中国 : 文档库
JavaScript 是一个比较完善的前端开发语言,在现今的 web 开发中应用非常广泛,尤其是对 Web 2.0 的应用. 随着 Web 2.0 越来越流行的今天,我们会发现:在我们的 web 应用项目中,会有大量的 JavaScript 代码,并且以后会越来越多. JavaScript 作为一个解释执行的语言,以及它的单线程机制,决定了性能问题是 JavaScript 的软肋,也是 web 软件工程师们在写 JavaScript 需要高度重视的一个问题,尤其是针对 Web 2.0 的应用.

10个顶级Web移动开发JavaScript框架

- Amo - HTML5研究小组
这些轻量级框架使用HTML5和CSS3标准来帮助您快速开发跨平台的Web移动应用和网站. jQuery Mobile这个框架能够帮助你快速开发出支持多种移动设备的Mobile应用用户界面. jQuery Mobile不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架.

现代浏览器的web音频javascript类库 - Howler.js

- - CSDN博客Web前端推荐文章
日期:2013-2-6  来源: GBin1.com. 浏览器这个玩意儿并不是个新鲜事,但是随着HTML5的发展激起了浏览器技术的巨大发展. 但是浏览器上对于音频控制技术来说仍旧非常的落伍. 庆幸的是 Google积极的开发和创建了web audio API,这使得基于浏览器的音频控制更加的简单并且直观.

超越Web,Javascript在物联网的应用

- - JavaScript - Web前端 - ITeye博客
Patrick Catanzariti 是一名Web开发工程师,最近他在. sitepoint 发表了《 JavaScript Beyond the Web in 2014》,介绍了JavaScript在物联网中的应用,非常有意思. 做为JavaScript的爱好者和从业者,我在这里把它翻译了,以飨读者.

统治Web的JavaScript准备要接管桌面了

- - 36氪
编者按:曾几何时,通信网络曾经活跃过许多协议,那些协议在不同的场景下都有各自的优势. 但是后来 TCP/IP 随着互联网的崛起而异军突起,最终形成一统天下的格局. 而原本被视为不入流的 Web 前端玩具 JavaScript 现在似乎也在复制着类似的路径,先是渗透到 web 后端开发,然后甚至开始 入侵到桌面了.

简化web开发者复杂任务的25个有用的javascript库

- - 博客园_首页
这是非常有用的,因为他们使网站对于用户更加友好. 今天,我列出了一些最有用的轻巧和独特的 JavaScript库. 此列表的JavaScript库将有很大的帮助对于Web开发人员和设计师. 你可以用来创建用户友好的,执行特定功能的代码. 在线浏览PDF文件的实用jquery插件推荐. 精心收藏的14个开发人员方便的jQuery代码片段.