内 容 提 要 本书讲解如何用 Node 构建可扩展因特网应用,是全面的实用指南,除了详细介绍 Node 提 供的 API 外,还用大量篇幅介绍了服务器事件驱动开发的重要概念。内容涉及跨服务器的并发 连接、非阻塞 I/O 和事件驱动的编程、如何支持各种数据库和数据存储工具、Node API 的使用 示例等。 本书适合对 JavaScript 及编程有一定程度了解的读者阅读。 图灵程序设计丛书 Node即学即用 ◆ 著 [英] Tom Hughes-Croucher Mike Wilson 译 郑达 责任编辑 朱 巍 执行编辑 李 瑛 ◆ 人民邮电出版社出版发行 北京市崇文区夕照寺街14号 邮编 100061 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn 北京 印刷 ◆ 开本:800×1000 1/16 印张:12.25 字数:242千字 2013年 1 月第 1 版 印数:1 — 3 500册 2013年 1 月北京第 1次印刷 著作权合同登记号 图字:01-2012-4261号 ISBN 978-7-115-30618-0 定价:39.00元 读者服务热线:(010)51095186转604 印装质量热线:(010)67129223 反盗版热线:(010)67171154 版权声明 ©2012 by O’Reilly Media, Inc. Simplified Chinese Edition, jointly published by O’Reilly Media,Inc.and Posts & Telecom Press, 2013. Authorized translation of the English edition, 2013 O’Reilly Media, Inc., the owner of all rights to zpublish and sell the same. All rights reserved including the rights of reproduction in whole or in part in any form. 英文原版由 O’Reilly Media, Inc. 出版 2012。 简体中文版由人民邮电出版社出版,2013。英文原版的翻译得到 O’Reilly Media, Inc. 的授权。此简体中文版的出版和销售得到出版权和销售权的所有者 —— O’Reilly Media, Inc. 的许可。 版权所有,未得书面许可,本书的任何部分和全部不得以任何形式重制。 III O’Reilly Media, Inc.介绍 O’Reilly Media 通过图书、杂志、在线服务、调查研究和会议等方式传播创新知识。 自 1978 年开始,O’Reilly 一直都是前沿发展的见证者和推动者。超级极客们正在开创 着未来,而我们关注真正重要的技术趋势——通过放大那些“细微的信号”来刺激社 会对新科技的应用。作为技术社区中活跃的参与者,O’Reilly 的发展充满了对创新的 倡导、创造和发扬光大。 O’Reilly 为软件开发人员带来革命性的“动物书”;创建第一个商业网站(GNN);组 织了影响深远的开放源代码峰会,以至于开源软件运动以此命名;创立了 Make 杂志, 从而成为 DIY 革命的主要先锋;公司一如既往地通过多种形式缔结信息与人的纽带。 O’Reilly 的会议和峰会聚集了众多超级极客和高瞻远瞩的商业领袖,共同描绘出开创 新产业的革命性思想。作为技术人士获取信息的选择,O’Reilly 现在还将先锋专家的 知识传递给普通的计算机用户。无论是通过书籍出版、在线服务或者面授课程,每一 项 O’Reilly 的产品都反映了公司不可动摇的理念——信息是激发创新的力量。 业界评论 “O’Reilly Radar 博客有口皆碑。” ——Wired “O’Reilly 凭借一系列(真希望当初我也想到了)非凡想法建立了数百万美元的业务。 ” ——Business 2.0 “O’Reilly Conference 是聚集关键思想领袖的绝对典范。” ——CRN “一本 O’Reilly 的书就代表一个有用、有前途、需要学习的主题。” ——Irish Times “Tim 是位特立独行的商人,他不光放眼于最长远、最广阔的视野并且切实地按照 Yogi Berra 的建议去做了:‘如果你在路上遇到岔路口,走小路(岔路)。’回顾过 去,Tim 似乎每一次都选择了小路,而且有几次都是一闪即逝的机会,尽管大路 也不错。” ——Linux Journal Ryan Dahl序 2008 年,我在寻找一个新的编程平台来做网站。我并不是想要一门新的语言,实际 上,语言自身的细节对我来说并不重要。我真正关心的是,该语言能否提供先进的 推送功能并集成到网站中来,就像我在 Gmail 中看到的那样——能够从服务器端把 数据主动推送给用户,而不是采用不断轮询拉取数据的方式。现有的平台都把服务 器作为接受请求然后返回相应内容的设备。要把事件推送到浏览器,平台需要能够 持续处理大量打开的网络连接,而这其中有许多连接其实是空闲的。 Google 在 2008 年 年 末 推 出 了 Chrome 浏 览 器 和 崭 新 的 JavaScript 引 擎 V8。 这 是 一个为了更快的 Web 体验而专门制作的更快的 avaScript 引擎,V8 让 Web 应用大 大提速了。突然之间,Google、Apple、Mozilla 和微软之间的 JavaScript 军备竞赛 就开始了。再加上 Doug Crockford 的 JavaScript: The Good Parts 一书的面世,把 JavaScript 从一门人人轻视的语言一下变成了重要的语言。 于是,我有了个主意:JavaScript 结合非阻塞 socket !因为 JavaScript 并没有现成的 socket 库,所以我可以勇做第一人,来推介这个崭新且大有前途的接口。只要把 V8 接上我的非阻塞 C 代码,我就能把它完成。我终止了当时承接的工作,开始全力实 现这个想法。当我编写好并发布了最初的版本后,立刻就有用户开始反馈 bug,然 后我开始不停地处理这些 bug,就这样,不知不觉过去了 3 年。 实践证明,JavaScript 与非阻塞 socket 配合得相当完美。开始我并不敢肯定这一点, 但闭包让所有事情变得可能。只需要简单的几行 JavaScript 代码,就可以构建出非 常复杂的非阻塞服务器。我最初还担心,系统会过于小众,但很快我就放心了,因 为世界各地的黑客们纷纷开始为其编写程序库。唯一的事件循环队列和纯粹的非阻 塞接口让程序库不必增加昂贵的线程,就能添加越来越多的复杂功能。 在 Node 中,用户会发现系统在默认情况下就能很好地扩展。因为其核心系统做出 1 的选择是,不允许系统中的任何部分做出太坏的事情来(比如堵塞当前线程),所以 整体性能也不会太差。如果以能够处理的流量作为计量,Node 的方法要比传统的阻 塞式操作好上一个数量级。 现在,Node 已经在全球被众多公司所使用,包括创业公司、Voxer、Uber,以及沃 尔玛、微软这样的知名公司。可以说,每天通过 Node 处理的请求数以亿计。随着 越来越多的人参与到本项目中来,可用的第三方模块和扩展增长迅猛,而且质量也 不断提升。虽然我曾建议将 Node 用于关键任务应用,但现在,即便是要求最苛刻 的服务器系统,我也会热诚地推荐使用 Node。 本书探讨了 Node 及许多第三方模块,并给出了指导练习,旨在带你深入浅出地了 解 Node。通过学习本书,你不但能够熟悉 JavaScript 的基本操作,还能逐渐开始构 建复杂、交互式的网站。如果你曾经使用过其他服务器端 Web 框架,你会震惊于用 Node 这么容易就能编写一个服务器! ——Ryan Dahl,Node.js 的创建者 2 | Ryan Dahl 序 Brendan Eich序 1995 年 4 月,我加入了 Netscape 公司,负责“把 Scheme 添加到浏览器里”。一两 个月后,这个任务却演变成了“创造一门看起来像 Java 的脚本语言”。更糟糕的是, 当时正在商议把 Java 添加到 Netscape 里,所以 Netscape 的一部分人对是否需要一 门“第二语言”表示怀疑。同时,另外一部分人想要的是类似 PHP 的东西,也就是 为公司计划发布的服务器产品 LiveWire 写的一门 HTML 模板语言。 于是,在 1995 年 5 月,我用 10 天时间开发了 Mocha 原型(代码名称是 Marc Andreessen 挑选的)。当时,Marc、Rick Schell(Netscape 的工程副总裁)和 Sun 公司 的 Bill Joy 这几位高层管理者都支持我继续做下去,以消除人们对 Java 之后“第二 语言”的怀疑。(极具讽刺的是,Java 几乎已在浏览器世界里绝迹了,而 JavaScript 则成为 Web 客户端的主导。) 为了消除一切疑虑,我需要在 10 天内拿出一个能演示的原型。当时我日以继夜地工 作,结果引入了一些设计语言的错误(其中一些重复了 LISP 演变过程中的设计错 误),但最终还是赶在期限前完成了演示。 人们很惊讶,我竟然用不到两周的时间就完成了一门语言的编译器和运行环境。其 实自从大三那年由物理专业转到数学 / 计算机科学专业起,我已经积累了十多年的 经验。我一直很喜欢形式语言和自动机理论,并出于兴趣编写了自己的语言解析器 和解析器生成器。在 Silicon Graphics 的时候,我编写的网络监控工具包含了包头 匹配、协议描述语言和编译器。此外,我还是 C 和 Unix 的忠实粉丝。所以,弄出 Mocha 只不过是一件需要持续工作与专注的事情。 1995 年 秋 天,Netscape 市 场 部 把 Mocha 改 名 为 LiveScript, 好 让 它 和 服 务 器 产 品 LiveWire 的名字相匹配。1995 年 12 月初,Netscape 和 Sun 最终签订一份商标使用许可 协议,由创始人 Bill Joy 代表 Sun 公司签字生效,LiveScript 正式改名为 JavaScript(JS) 。 1 因为有 LiveWire 服务器的计划,我在头 10 天里实现了一个字节码编译器和解释器, 同时还有反编译器和运行时程序(内置我们今天熟悉的 JS 对象和函数:Object、 Array、Function 等)
Node即学即用
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
本文档由 user 于 2021-02-28 15:18:30上传分享