出版时间:2012-4 出版社:人民邮电出版社 作者:[美] David Herron 译者:鄢学鵾,吴天豪,廖 健
Tag标签:无
前言
欢迎光临Node(也叫Node.js)开发的世界。Node是一种新兴的软件开发平台,它将JavaScript从Web浏览器移植到常规的服务器端。Node运行在Chrome的高速V8引擎上,并附带了一个快速、健壮的异步网络I/O组件库。Node主要用于构建高性能、高可扩展的服务器和客户端应用,以实现真正“实时的Web应用”。 在经过数年尝试用Ruby和其他语言实现Web服务器组件之后,Ryan Dahl在2009年开发了Node平台。这个探索使他从使用传统的、基于线程的并发模型转向使用事件驱动的异步系统,因为后者更简单(多线程系统以难于开发著称),系统开销更低(与对每个连接维护一个线程相比),因而能提高相应的速度。Node旨在提供一个“创建可扩展网络服务器的简单方式”。这个设计受到了Event Machine(Ruby)和Twisted框架(Python)的影响,并和它们有些类似。 本书致力于讲述如何用Node构建Web应用。我们会在书中介绍快速学习Node时一些必需的重要概念。本书会教你编写真正的应用,剖析其工作原理,并讨论如何在程序中应用这些理念。我们需要安装Node和npm,学习安装和开发npm包及Node模块。此外,我们还会开发一些应用,度量长时间运行的计算在Node的事件循环中的响应能力,介绍将高负载的工作分派到多个服务器的方法,并介绍Express框架。 本书内容 第1章“Node入门”,介绍了Node平台。这一章讲述了Node的用途、技术构架上的选择、Node的历史和服务器端JavaScript的历史,然后介绍为什么JavaScript仍将受困于浏览器。 第2章“安装并配置Node”,介绍如何配置Node开发环境,包括多种从源码编译和安装的场景,还会简单介绍在开发环境中如何部署Node。 第3章“Node模块”,解释了作为开发Node应用基本单位的模块。我们会全面介绍并开发Node模块。然后进一步介绍Node包管理器npm,给出一些使用npm管理已安装包的例子,还将涉及开发npm包并将其发布出来供他人使用。 第4章“几种典型的简单应用”,在读者已经有一些Node基础知识后,开始探索Node应用的开发。我们会分别使用Node、Connect中间件框架和Express应用框架开发一个简单的应用。虽然应用比较简单,但是我们可以通过其开发探索Node的事件循环,处理长时间的运算,了解异步和同步算法以及如何将繁重的计算交给后台服务器。 第5章“简单的Web服务器、EventEmitter和HTTP客户端”,介绍了Node里的HTTP客户端和服务器对象。我们会在开发HTTP服务器和客户端应用的同时全面深入介绍HTTP会话。 第6章“存取数据”,探讨大部分应用都需要的长期可靠的数据存储机制。我们会用SQL和MongoDB数据库引擎实现一个应用。在此期间,我们将用Express框架实现用户验证,更好地展示出错页面。 阅读要求 目前,我们一般会采用源码的方式安装Node,这种方式可以很好地用在类Unix和符合POSIX标准的系统上。当然,在接触Node之前,谦逊的心态是必需的,但最为重要的事情还是让大脑供血充足。 从源码安装的方式需要一个类Unix或类POSIX系统(比如Linux、Mac、FreeBSD、OpenSolaris等)、新的C/C++编译器、OpenSSL库和Python 2.4或更新版本。 Node程序可以用任何文本编辑器来写,不过一个能处理JavaScript、HTML、CSS等的文本编辑器会更有帮助。 尽管本书介绍的是Web应用开发,但你并不需要拥有一个Web服务器。Node有自己的Web服务器套件。 读者对象 本书写给所有想在一个新的软件平台上开拓新编程模式的软件工程师。 服务器端程序员或许能看到一些新奇的概念,对Web应用开发产生新的理解。JavaScript是一门强大的语言,Node的异步特性发挥了JavaScript的优势。 浏览器端JavaScript“攻城师”或许会觉得在Node中使用JavaScript和编写与DOM操作无关的JavaScript代码很有趣。(Node平台上没有浏览器,所以也没有DOM,除非你安装JSDom。) 虽然本书各章内容由浅入深,循序渐进,但到底如何阅读本书悉听尊便。 本书需要读者知道如何编写软件,并且对JavaScript等编程语言有所了解。 排版约定 在本书中,读者会发现不同的文本样式。下面是这些样式的示例和说明。 正文中的代码使用特殊字体:“http对象封装HTTP协议,它的http.createServer方法会创建一个完整的Web服务器,而.listen方法用于监听特定的端口。” 代码块是这样的: var http = require(‘http’); http.createServer(function (req, res) { res.writeHead(200, {‘Content-Type’: ‘text/plain’}); res.end(‘Hello World\n’); }).listen(8124, ““127.0.0.1”“); console.log(‘Server running at http://127.0.0.1:8124/’); 代码块中会加粗突出显示代码,这表示需要读者格外注意: var util = require(‘util’); var A = ““a different value A”“; var B = ““a different value B”“; var m1 = require(‘./module1’); util.log(‘A=’+A+‘ B=’+B+‘ values=’+util.inspect(m1.values())); 命令行的输入输出是这样的: $ sudo /usr/sbin/update-rc.d node defaults 新术语及重要词汇都会加粗显示。你将在屏幕上看到的文字,比如菜单或对话框中的文字,会这样在正文中提到:“一个真正安全的系统至少会有用户名和密码输入框。不过,我们这里就直接让用户单击Login按钮了。” 读者反馈 我们始终欢迎来自读者的反馈意见。我们想知道读者对本书的看法,读者喜欢哪些内容或不喜欢哪些内容。读者真正深有感触的反馈,对于我们开发图书产品至关重要。 一般的反馈可以发邮件到feedback@packtpub.com,但请在邮件标题中注明相关书名。 如果有关于新书的建议,你可以登录www.packtpub.com,填写SUGGEST A TITLE表单或者向suggest@packtpub.com发送邮件。 如果你在某个领域积累了丰富的经验,想写一本书,或者愿意与人合著或审校某本书,请阅读www.packtpub.com/authors上的作者指南。 读者服务 现在你已是Packt引以为荣的读者了,因此我们特别要交待几件事,以保障你作为读者的最大权益。 下载示例代码 在www.packtpub.com通过自己的账号购买图书的读者,可以下载所有已购买图书的代码 。如果这本书是你在其他地方购买的,访问www.packtpub.com/support并注册,我们将通过电子邮件将相关文件发送给你。 勘误 虽然我们会全力确保本书内容的准确性,但错误仍在所难免。如果你发现了本书中的错误(包括文字和代码错误),而且愿意向我们提交这些错误,我们会十分感激。这样一来,不仅可以减少其他读者的疑虑,也有助于本书后续版本的改进。要提交错误,请访问www. packtpub.com/support,选择相关图书,单击errata submission form链接,然后输入勘误信息。经过验证后,你提交的勘误信息就会添加到已有的勘误列表中。要查看已有的勘误信息,请访问www.packtpub.com/support并选择相关图书。 反盗版声明 网上各种形式的盗版是一直存在的问题。Packt非常重视版权和许可证的保护。如果你在网上遇到以任何形式非法复制的我方作品,请尽快告知我们相关的地址或网站名称,以便我们采取补救措施。 请把邮件发送到copyright@packtpub.com,并在邮件里注明涉嫌侵权资料的链接。 感谢你帮助我们保护作者和我们为你带来有价值内容的能力。 疑难解答 如果对本书的某些方面有疑问,请将电子邮件发送到questions@packtpub.com,我们会尽力解决。
内容概要
作为服务器端的JavaScript解释器,Node是一个轻量高效的开发平台,用于构建响应快速、高度可扩展的Web应用。它使用事件驱动和非阻塞的I/O模型,非常适合开发数据密集、对实时响应要求高的分布式应用,在微软、eBay、LinkedIn、雅虎等世界知名公司均有成功的应用。
本书是Node开发基础教程,通过大量示例介绍如何使用HTTP服务器和客户端对象、Connect和Express应用框架、异步执行算法,以及如何结合使用SQL和MongoDB数据库。另外,本书同时针对开发和部署环境给出了实用的Node安装建议,介绍了HTTP服务器和客户端应用的开发,阐述了很多Node使用方式,包括在应用中使用数据库存储引擎,以及在有无Connect/Express
Web应用框架的情况下开发网站的方法。本书还介绍了Node的CommonJS模块系统,帮助开发人员实现一些重要的面向对象设计方案。
本书适合具有一定JavaScript和Web应用开发基础知识、打算使用服务器端JavaScript开发高性能Web应用的开发人员阅读。
本书内容包括:
服务器端JavaScript对于Web应用开发的作用
使用Node时,针对性能和吞吐量作出成熟的架构选择?
为开发和部署服务器端Web应用安装和使用Node
Connect和Express应用框架的使用?
在应用中设置SQL或MongoDB数据库系统
区分并评估同步算法和异步算法?
作者简介
David Herron
软件开发人员和软件质量工程师,在硅谷从业20多年,目前在雅虎担任质量工程小组的架构师,管控公司基于Node开发的Web应用平台的质量。
他曾为Sun公司主管工程师,并作为Java
SE质量工程小组的架构师负责开发自动化测试工具(包括现在广泛用于GUI自动测试软件的AWT
Robot类),期间参与了OpenJDK和JDK-Distros项目的启动,举办了世界性的Mustang
Regressions大赛,让Java开发者社区寻找Java 1.6的bug。
任职Sun公司之前,他曾为VXtreme公司开发视频流处理工具(Windows Media
Player的前身),在Wollongong集团从事电子邮件客户端和服务器软件的开发,加入了互联网工程任务组,负责改进与电子邮件相关的协议。
鄢学鵾
阿里云云手机开发者运营负责人,曾在网易做过UI设计师,在雅虎中国领导过前端团队,在口碑网领导过UED团队,还担任D2前端技术论坛顾问。对Web标准、前端开发模式、性能优化和自动化有较深入的研究。目前专注于从Mobile到PC领域的设计、技术和业务间的结合,常用ID:秦歌、三七。其译著有《JavaScript语言精粹》和《高性能网站建设进阶指南:Web开发者性能优化最佳实践》,个人博客是dancewithnet.com,Twitter账号是@
kavenyan。
吴天豪
阿里云计算前端开发工程师,w3ctech杭州站负责人,w3ctech.com内容贡献者,负责过口碑网产品线的开发、基于移动浏览器的Web
App开发,致力于构建快速、高效、可访问性高的Web应用。
廖健
阿里云资深前端开发工程师,有多年Flash平台开发经验,喜欢奔放的脚本语言,曾在D2论坛和HTML5研究小组线下沙龙做过技术分享,目前主要研究和实践Web技术在移动平台上的应用。
书籍目录
第1章 Node入门
1.1 Node能做什么
1.2 为什么要使用Node
1.2.1 架构问题:线程,还是异步事件驱动
1.2.2 性能和利用率
1.2.3 服务器利用率、成本和绿色Web托管服务
1.3 Node、Node.js还是Node .JS
1.4 小结
第2章 安装并配置Node
2.1 系统要求
2.2 在符合POSIX标准的系统上安装
2.3 在Mac OS X上安装开发者工具
2.3.1 在home目录下安装
2.3.2 在系统级目录下安装Node
2.3.3 在Mac OS X上使用MacPorts安装
2.3.4 在Mac OS X上使用homebrew安装
2.3.5 在Linux上使用软件包管理系统安装
2.3.6 同时安装并维护多个Node
2.4 验证安装成功与否
2.4.1 Node命令行工具
2.4.2 用Node运行简单的脚本
2.4.3 用Node启动服务器
2.5 安装npm——Node包管理器
2.6 系统启动时自动启动Node服务器
2.7 小结
第3章 Node模块
3.1 什么是模块
3.1.1 Node模块
3.1.2 Node解析require ('module')的方式
3.2 Node包管理器
3.2.1 npm包的格式
3.2.2 查找npm包
3.2.3 使用npm命令
3.2.4 Node包版本的标识和范围
3.2.5 CommonJS模块
3.3 小结
第4章 几种典型的简单应用
4.1 Math Wizard
4.2 不依赖框架的实现
4.2.1 路由请求
4.2.2 处理URL查询参数
4.2.3 乘法运算
4.2.4 其他数学函数的执行
4.2.5 扩展Math Wizard
4.2.6 长时间运行的运算(斐波那契数)
4.2.7 还缺什么功能
4.2.8 使用Connect框架实现Math Wizard
4.2.9 安装和设置Connect
4.2.10 使用Connect
4.3 使用Express框架实现Math Wizard
4.3.1 准备工作
4.3.2 处理错误
4.3.3 参数化的URL和数据服务
4.4 小结
第5章 简单的Web服务器、EventEmitter和HTTP客户端
5.1 通过EventEmitter发送和接收事件
5.2 HTTP Sniffer——监听HTTP会话
5.3 基本的Web服务器
5.4 MIME类型和MIME npm包
5.5 处理cookie
5.6 虚拟主机和请求路由
5.7 发送HTTP客户端请求
5.8 小结
第6章 存取数据
6.1 Node的数据存储引擎
6.2 SQLite3——轻量级的进程内SQL引擎
6.2.1 安装SQLite
6.2.2 用SQLite3实现便签应用
6.2.3 在Node中使用其他SQL数据库
6.3 Mongoose
6.3.1 安装Mongoose
6.3.2 用Mongoose实现便签应用
6.3.3 对MongoDB数据库的其他支持
6.4 如何实现用户验证
6.5 小结
编辑推荐
用Node平台打造高性能Web应用 雅虎架构师精准解读最炙手可热的Web开发技术 从基础到实践,示例丰富
图书封面
图书标签Tags
无
评论、评分、阅读与下载