JavaScript 花了很长时间才产生了影响。许多与 JavaScript 相关的技术已经存在了一段时间,直到它们被主流发现。本节描述了从 JavaScript 诞生到今天所发生的事情。在整个过程中,只提到了最受欢迎的项目,许多项目都被忽略了,即使它们是第一个。例如,列出了 Dojo Toolkit,但也有同时期创建的不太为人知的 qooxdoo。Node.js 被列出来了,尽管 Jaxer 比它更早出现。
2001 年,Douglas Crockford 命名并记录了 JSON(JavaScript 对象表示法),其主要思想是使用 JavaScript 语法以文本格式存储数据。JSON 使用 JavaScript 字面量来表示对象、数组、字符串、数字和布尔值,以表示结构化数据。例如:
{
"first"
:
"Jane"
,
"last"
:
"Porter"
,
"married"
:
true
,
"born"
:
1890
,
"friends"
:
[
"Tarzan"
,
"Cheeta"
]
}
多年来,JSON 已经成为 XML 的一种流行的轻量级替代方案,特别是在需要表示结构化数据而不是标记的情况下。自然,JSON 很容易通过 JavaScript 使用(参见 第二十二章)。
Ajax 是一组技术,它为网页带来了与桌面应用程序相媲美的交互性。2005 年 2 月,一个令人印象深刻的例子展示了通过 Ajax 可以实现什么:谷歌地图。这个应用程序允许你平移和缩放世界地图,但只有当前可见的内容被下载到浏览器。谷歌地图问世后,Jesse James Garrett 注意到它与其他交互式网站有一些共同的特点。他将这些特点称为 Ajax,是 异步 JavaScript 和 XML 的缩写。[7] Ajax 的两大基石是在后台异步加载内容(通过 XMLHttpRequest
)和用结果动态更新当前页面(通过动态 HTML)。与总是执行完整的页面重新加载相比,这是一个相当大的可用性改进。
Ajax 标志着 JavaScript 和动态网络应用的主流突破。有趣的是,这花了多长时间——在那时,Ajax 的要素已经存在多年了。自从 Ajax 诞生以来,其他数据格式已经流行起来(JSON 取代了 XML),其他协议也被使用(例如,除了 HTTP 之外,还有 Web Sockets),双向通信也成为可能。但基本技术仍然是一样的。然而,Ajax 这个词现在已经很少使用了,大部分被更全面的 HTML5 和 Web 平台(两者都意味着 JavaScript 加上浏览器 API)所取代。
Node.js 让你 实现性能良好的服务器。为此,它使用了事件驱动的、非阻塞的 I/O 和 JavaScript(通过 V8)。Node.js 的创建者 Ryan Dahl 提到了选择 JavaScript 的以下原因:
Dahl 能够在事件驱动服务器和服务器端 JavaScript 的前期工作基础上进行构建(主要是 CommonJS 项目)。
Node.js 对 JavaScript 程序员的吸引力不仅仅在于能够使用熟悉的语言进行编程;你可以在客户端和服务器端使用相同的语言。这意味着你可以共享更多的代码(例如,用于验证数据的代码),并使用 同构 JavaScript 等技术。同构 JavaScript 是指在客户端或服务器端组装网页,它有许多好处:页面可以在服务器端渲染,以加快初始显示速度、SEO,以及在不支持 JavaScript 或版本过低的浏览器上运行。但它们也可以在客户端更新,从而获得响应更快的用户界面。
在 Chrome OS 中,网络 平台就是原生平台。这种方法有几个优点:
移动操作系统 webOS(起源于 Palm,现在归 LG 电子所有)的推出早于 Chrome OS,但“浏览器即操作系统”的想法在后者身上体现得更为明显(这也是它被选为里程碑的原因)。webOS 既少又多。少,是因为它非常专注于手机和平板电脑。多,是因为它内置了 Node.js,让你可以用 JavaScript 实现服务。网络操作系统类别中最近的一个成员是 Mozilla 的 Firefox OS,它针对的是手机和平板电脑。Mozilla 的维基提到了网络操作系统对网络的好处。
我们还需要一个目标,以便确定我们努力的范围和重点。最近,我们看到了 pdf.js 项目[它通过 HTML5 渲染 PDF,无需插件],它暴露了一些需要填补的小漏洞,以便“HTML5”成为 PDF 的超集。我们现在想迈出一大步,找到那些阻碍网络开发者构建在各个方面都与为 iPhone、Android 和 WP7 构建的原生应用程序相媲美的应用程序的差距。