内 容 提 要 本书首先简要介绍 Node.js,然后通过各种示例讲解 Node.js 的基本特性,再用案例式教学的方式讲述 如何用 Node.js 进行 Web 开发,接着探讨一些 Node.js 进阶话题,最后展示如何将一个 Node.js 应用部署到 生产环境中。 本书面向对 Node.js 感兴趣,但没有基础的读者,也可供已了解 Node.js,并对 Web 前端 / 后端开发有 一定经验,同时想尝试新技术的开发者参考。 图灵原创 Node.js开发指南 ◆ 著 BYVoid 责任编辑 王军花 执行编辑 丁晓昀 ◆ 人民邮电出版社出版发行 北京市崇文区夕照寺街14号 邮编 100061 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn 北京 印刷 ◆ 开本:800×1000 1/16 印张:11.75 字数:249千字 印数:1 — 5 000册 2012年 7 月第 1 版 2012年 7 月北京第 1 次印刷 ISBN 978-7-115-28399-3 定价:45.00元 读者服务热线:(010)51095186转604 印装质量热线:(010)67129223 反盗版热线:(010)67171154 前 言 1 1 前 言 2 3 这本书讲了什么 本书是一本 Node.js 的入门教程,写给想了解 Node.js 的开发人员。我的目标是使读者通 过阅读本书,学会使用 Node.js 进行 Web 后端开发,同时能熟悉事件驱动的异步式编程风格, 4 以便进一步了解 Node.js 的许多高级特性,以及它所应用的更多领域。 本书共6章,分别讨论了 Node.js的背景、安装和配置方法、基本特性、核心模块以及一 些进阶话题。除此之外,还有2个附录,分别介绍了JavaScript 的高级特性和 Node.js 编程规 5 范。下面简要概述各章的主要内容。 第 1 章“Node.js 简介” 这一章概述了什么是Node.js。读过这章后,你将对 Node.js 有一个基本的认识,同时了 6 解它与 JavaScript 的深厚渊源。 第 2 章“安装和配置Node.js” 7 这一章讲述了如何在各种不同的环境下安装和配置 Node.js 及其基本运行环境,同时你 你可以了解到如何编译Node.js,以及多版本管理工具。 第 3 章“Node.js 快速入门” 8 这一章讲解Node.js的基础知识,你将会学到如何使用 Node.js 的基本环境和工具进行开发、 运行和调试。同时,还会讲解异步式I/O与事件式编程的一些重要概念,这些概念将会贯穿全书。 此外这一章还详细介绍了 Node.js 的模块和包的系统,这些都是开发中经常会碰到的内容。 9 第 4 章“Node.js 核心模块” 这一章以全局对象、基本工具、事件发射器、文件系统和 HTTP 为代表,介绍了 Node.js 10 2 前 言 最常用的核心模块。你将会在后面的章节及以后的开发中经常与这些模块打交道。 第 5 章“使用 Node.js 进行 Web 开发” 这一章是本书的实践性章节,一步一步教你如何从零开始用 Express 框架创建一个网站, 实现路由控制、模板解析、会话管理、数据库访问等功能,最终创建一个 Web 2.0 微博网站。 第 6 章“Node.js 进阶话题” 这一章涉及几个进阶话题,包括模块加载机制、控制流分析和优化、生产环境的应用部 署等内容,最后还讨论了 Node.js 适用的范围,帮助读者在今后的开发中作出更好的取舍。 附录A“JavaScript 的高级特性” 这个附录介绍了 JavaScript 的一些高级特性,如函数作用域、闭包和对象的操作等内容。 这些特性在浏览器端的JavaScript 开发中并没有受到应有的重视,而在 Node.js 中却十分常 见,阅读这个附录可以帮助你更好地理解并运用 JavaScript 进行复杂的网站开发。 附录B“Node.js 编程规范” 这个附录介绍了 Node.js 代码风格的一些约定,遵守这些约定可以让你的代码更清晰、 易懂,同时也有利于接口开发的统一。该附录还分享了一些开发经验,可以让程序避免很多 意外错误和性能损失。 谁应该阅读本书 本书的目标读者是想要学习 Node.js,但没有任何系统的经验的开发者。如果你听说过 Node.js,并被它许多神奇的特性吸引,那么这本书就是为你准备的。通过阅读本书,你可以 对 Node.js 有全面的认识,学会如何用 Node.js 编程,了解事件驱动、异步式 I/O 的编程模式, 同时还可以掌握一些使用 JavaScript 进行函数式编程的方法。 本书假设读者已经学过至少一门编程语言,对基本的程序设计语言概念(如变量、函数、 递归、对象)有所了解。如果你是首次学习编程语言,我建议你先学一门常见的且容易入门 的语言,如 Java 或 C。 如何阅读本书 熟悉浏览器端 JavaScript 的读者将很容易学会 Node.js 的许多特性,包括事件式编程、 闭包、回调函数等,因为这些特性已经在浏览器中被广泛应用。同时,你还可以学到 Node.js 前 言 3 在Web 开发中的服务器端与浏览器端的结合方式,这无论是对前端设计还是后端开发都是有 利的。你还会对 JavaScript 有一个全新的认识,因为服务端的 JavaScript 中没有 DOM 和 1 BOM,也不存在浏览器之间的兼容性问题。 不熟悉 JavaScript但是了解C、Java、C++、C#的读者将很容易学会 JavaScript 的语言特 性及 Node.js 的基本机制,如模块和包。你需要关注的仅仅是 JavaScript 语言的特别之处, 2 以及服务器端开发中需要注意的一些要点。 已经非常了解 Web 后端开发(如 PHP、ASP.net、Ruby on Rails、Django 等)的读者, 本书将通过 Node.js 给你一个不同的视野。你会发现 Node.js 和这些传统的框架有很大的区 别,因为它使用了事件式编程和异步 I/O,所以你需要改变一些已有的思维方式。同时,你 3 还能享受到 Web 前后端紧密配合带来的新鲜感,并可能对 Ajax 有全新的认识。 如果是完全没有接触过JavaScript的读者,那么我建议你看完本书的前两章以后,花点时 间到http://www.w3school.com.cn/js/网站看看 JavaScript 的入门教程。你只要了解基础知识就 4 行了,本书并不要求你学成一个JavaScript专家。在这之后请阅读本书的附录A,了解一下实 际开发中可能会遇到的稍微复杂的语言特性。附录A是为本书量身定做的,你可以从中很快 地学会 Node.js 经常使用到的那些特性。如果你想更加深入系统地学习JavaScript,推荐阅读 Mozilla JavaScript指南http://developer.mozilla.org/en/JavaScript/Guide。 5 本书从第3章开始,将介绍如何用 Node.js 开发,你应该仔细阅读这一章。第4章是一些 最基本的模块介绍,涉及Node.js 模块的基本风格,这可能会帮助你理解后面介绍的 API。第 5章是一个真枪实弹的实战演练,跟随这一章的每个步骤你就可以用 Node.js 实现一个真正的 Web 应用,体验开发的成就感。第6章则是一些进阶话题,你会在这里接触到 Node.js的一些 6 深层次概念,同时你还将学会如何真正部署 Node.js 应用。 本书的每一章最后都有一个参考资料小节,里面有很多有价值的资料,如果感兴趣不妨 继续深入阅读。在阅读本书的过程中,我建议你抽时间看看附录B,在这里你会了解到Node.js 7 开发的一些编程规范,写出符合社区风格的漂亮程序。 如何学习 Node.js 通读本书,你将会学到 Node.js 的很多东西,但如果想完全掌握它,我建议你亲自尝试 8 运行本书中的每一段代码。本书的所有代码可以在http://www.byvoid.com/project/node上找 到。① 除此之外,你最好自己用 Node.js 做一个项目,因为通过实践你会遇到很多问题,解 决这些问题可以大大加深对 Node.js 的理解。 9 注意,不要忘了互联网网上的资源,比如Node.js 的官方 API 文档http://nodejs.org/api/。 我强烈推荐你去 CNodeJS 社区看看http://cnodejs.org/,这里汇集了许许多多中国优秀的 —————————— ① 读者也可以到图灵社区(ituring.com.cn)本书的页面上下载源代码或提交勘误。——编者注 10 4 前 言 Node.js 开发者。他们每天都在讨论着大量有关Node.js各个方面的话题,你可以在上面获得 很多帮助。同时,CNodeJS 社区的网站也是用 Node.js 写成的,而且是开源的,它是一个非 常好的让你了解如何用 Node.js 开发网站的实例。 体例说明 本书正文中出现的代码引用都会以等宽字体标出,例如:console.log('Node.js')。 代码段会以段落的形式用等宽字体显示,例如: function hello() { console.log('Hello, world!'); } 在正文之中,偶尔还会穿插一些提示和警告,例如: 这是一个提示。 这是一个警告。 致谢 感谢对这本书提出宝贵意见的朋友们,他们是牟瞳、李垚①、周越、钟音、萧骐②、杨旭 东、孙嘉龙、范泽一、宋文杰、续本达、田劲锋、孟亚兰和李宇亮。他们为本书的结构、内 容、语言表述等方面给出了许多有建设性的意见。 感谢 CNodeJS 社区的贾超、田永强和微软亚洲研究院的杨懋,以及VMware公司的柴可 夫。他们不仅帮助审阅了本书,还解决了许多技术问题,给这本书提出了许多改进方案。 感谢弓辰开发的 Rime 输入法③,我用它完成了本书的创作。 还要感谢我的朋友徐可可,图灵公司的杨海玲、谢工、王军花以及各位编辑,她们给我 提供了许多帮助和鼓舞,没有她们的激励,我很难顶着巨大的学业压力坚持写完这本书。 —————————— ① 李垚是果壳网的作者之一,他的个人网站是http://www.liyaos.com/。 ② 萧骐是Dive into Python的译者,活跃在 linuxtoy http://linuxtoy.org/。 ③ Rime 是一个优秀的开源输入法,它不仅支持繁体
Node.js开发指南
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
本文档由 user 于 2021-02-28 14:48:18上传分享