前 言
Node.js是一个JavaScript运行环境(runtime)。实际上它是对GoogleV8引擎(应用于Google Chrome浏览器)进行了封装。由于其拥有异步非阻塞、环境搭建简单、实践应用快等特性,使得其在新一代编程开发中更为流行。同时,由于Node.js基于JavaScript语法,因此在学习Node.js时也可以了解和学习JavaScript的语法,拓宽和加深读者对Web前端开发技术的理解。
当前,Node.js主要应用于HTTP Web服务器的搭建和快速实现的独立服务器应用。在实践项目中,Node.js更适合做一些小型系统服务或者一些大项目的部分功能的实现。由于其版本不稳定,很多公司中主要将其应用于一些小项目中。如果以后其版本能够更加稳定可控,相信会有更多的公司将其应用于各种项目和服务中。
目前,国内Node.js的相关技术图书还非常稀缺。为了给想要学习Node.js开发技术的人员一个必要的指导,笔者编写了这本书。本书既注重基础知识讲解,又非常注重编程实践练习,讲解时给出了有针对性的实例,各章还给出了一些编程实践练习题。相信读者通过阅读本书,不仅可以全面掌握Node.js开发技术,还可以不需要借助任何框架而独立运用Node.js实现HTTP Web服务器的相关功能,从而摒弃对框架的依赖,进一步加深读者自我研发及独立思考的能力。
本书的特点
1.编码不依赖任何框架
为了便于读者更好地了解原生Node.js的开发实践,本书没有借助任何其他框架来讲解Web实践应用,书中的所有模块都是通过编写原生代码来实现。
2.结构合理,内容全面、系统
本书全面、系统地介绍了Node.js从入门到编程实践的各种技术,涵盖Node.js网络编程、Node.js与数据库等方方面面的知识。
3.叙述详实,例程丰富
本书提供了大量例程,便于读者实践演练。书中的每个例子都经过精挑细选,有很强的针对性。这些实例都给出了完整的代码和详细的代码注释。这些代码非常简洁和高效,便于读者学习和调试。当然,读者也可以直接重用这些代码来解决自己的问题。
4.结合实际,编程技巧贯穿其中
本书写作时特意给出了大量的实用编程技巧,对这些编程技巧的灵活使用,将会使读者的开发事半功倍。
5.语言通俗,图文并茂
本书以通俗易懂的语言讲解每一个技术点和实例,讲解时还穿插了大量效果图,并给出了程序的运行结果插图,便于读者更加直观地学习和理解。
6.大量习题,详尽解答
本书提供了大量的编程实践练习题和详尽的解答,便于读者进一步巩固和加深所学的各个技术点,从而达到更好的学习效果。
7.配多媒体教学视频
为了便于读者更加高效、直观地理解书中的技术点,作者为本书专门录制了8小时配套的多媒体教学视频。这些视频和本书源代码一起收录于配书光盘中。虽然视频录制的设备条件有限(主要靠耳麦),但依然相信这些视频可以给读者的学习提供有益的帮助。
本书内容体系
本书共分11章,各章的具体内容介绍如下。
第1章主要介绍了Node.js的概念、配置、第一个Node.js程序Hello World的实现及异步编程思想等。
第2章主要介绍了Node.js中的模块的概念,以及Node.js中exports和module.exports之间的联系和区别。Node.js中的NPM模块包含request、socket.io、express、jade和forever模块。Node.js中的设计模式包含单例、适配器和装饰模式。
第3章主要介绍了Node.js的Web开发技术。包含HTTP简单服务搭建、Node.js静态资源服务器实现、文件处理、Cookie和Session实践、Crypto模块加密及Node.js与Nginx配合实践等。
第4章主要介绍了Node.js中UDP服务器的搭建实践及Node.js与PHP之间的合作 方式。
第5章主要介绍了Node.js中require机制的实现、Node.js的C++扩展(同步和异步接口)编译实践方法。
第6章主要介绍了一些关于Node.js的编码习惯。
第7章主要介绍了利用Node.js操作MySQL和MongoDB的实例,其中包含实现Node.js的两个基类分别对应于MySQL和MongoDB。另外,还介绍了MySQL和MongoDB环境的搭建,以及两个数据中Node.js的NPM模块。
第8章主要从框架开发的角度介绍了一个基于Node.js的Myweb框架的基本设计架构及其实现的功能,以及该框架的实现。其中用到了express模块和jade解析模板,可帮助读者进一步了解Node.js的Web应用开发和express框架的应用。
第9章主要从框架应用的角度介绍了如何使用框架做一个简单的项目开发,即利用第8章的MyWeb 1.0框架实现一个简单的Web聊天室MyChat应用。
第10章主要介绍了两个实例:在线聊天室和联网在线中国象棋。这两个应用都是用本书中自我实践的代码框架MyWeb 2.0来实现的。
第11章主要介绍了Node.js的一些应用工具,包含日志模块、curl模块、crontab模块、forever模块、xml模块和邮件发送模块。
本书读者对象
* Node.js初学者;
* PHP或者JavaScript程序员;
* 想全面、系统地学习Node.js的人员;
* Node.js技术爱好者;
* 利用Node.js进行开发的技术人员;
* 大中专院校的学生和老师;
* 相关培训学校的学员。
本书作者
本书由黄丹华主笔编写。其他参与编写和资料整理的人员有陈杰、陈贞、樊俊、高彩丽、高莹婷、管磊、郭丽、韩亚、李红、李龙海、梁伟、刘忆智、曲宝军、孙忠贤、唐正兵、王全政、王勇浩、武文琛、徐学英、闫伍平、于轶、占海明、张帆。
致谢
本书在写作过程中参阅了大量的相关资料。在此对原文的作者、相关网站及社区表示特别的感谢!没有这些资料,笔者完成本书将会需要花费更多的时间,本书的推出时间也会延迟。下面给出本书参考的主要资料及来源。
CSDN社区中的《程序员如何说服老板采用Node.js》:由于Node.js已经越来越多地被程序员和公司关注,基于此CSDN有针对性地写了这篇文章,系统地告诉程序员在适当的机会下从哪些方面入手才能让团队及老板来支持Node.js的项目实现。本书中多处参考了该文章。
HACK SPARROW的Node.js Module–exports vs module.exports和Create NPM Package–Node.js Module:本书中介绍的exports与module.exports之间的区别和联系参考了英文资料Node.js Module–exports vs module.exports;本书中介绍的Node.js NPM模块发布参考了文章Create NPM Package–Node.js Module。
CNode社区ctrlacv的《静态文件服务器代码整理》:本书实现的一个静态服务器参考了国内知名Node.js社区CNode中的ctrlacv文章《静态文件服务器代码整理》。
田永强编著的《深入浅出Node.js(三):深入Node.js的模块机制》:本书在深入Node.js中介绍的require机制实现则是参阅了田永强的文章《深入浅出Node.js(三):深入Node.js的模块机制》编写而成。
移动开发博客lishen的《编写Node.js原生扩展》:本书中介绍的关于实现Node.js原生扩展模块方法,主要参考了国内网站移动开发博客lishen的文章《编写Node.js原生扩展》。
笔者在本书中给出了大量的脚注,注明这些资料的来源。其目的一是表示对原作者的尊重和感谢;二是便于读者查阅和学习。
本书的编写对笔者而言是一个“浩大的工程”。虽然笔者投入了大量的精力和时间,但只怕百密难免一疏。若有任何疑问或疏漏,请发邮件至bookservice2008@163.com。最后祝读者读书快乐!
编著者
??
??
??
??
Node.js开发实战详解
前言
·IV·
·III·