产品特色
编辑推荐
《Node.js实战(第2季)》作者来自CNode社区点击率颇高、粉丝数万的《一起学node.js》。《Node.js实战(第2季)》没有成为教条式的入门级别,而是真正进入Node.js实战层次。
《Node.js实战(第2季)》在《Node.js实战(双色)》的基础上增加了实战案例的难度,并结合了当下的热门应用,增加了对原理、代码的细节讲解。
《Node.js实战(第2季)》与《Node.js实战(双色)》配套学习,可迅速开阔视野、提升开发技能、增加实战实力。
《Node.js实战(第2季)》是经读者强烈呼吁而诞生的,作者绞尽脑汁,就是为了让读者在阅读后大呼过瘾!
内容简介
《Node.js实战(第2季)》通过7个实例分别讲解了Node.js在实战开发中的应用,这些章节既涉及Docker、Koa 等全新技术,也涉及OAuth2、命令行工具、消息队列、单元测试、编写C/C++模块等实战中经常会遇到的问题和应用场景。本书章节大体按照从简单到复杂的难度编排,每一章都通过一个实例指引读者从头开发一个Node.js应用,让读者循序渐进地学习Node.js,以及在实战开发中的编程技巧。本书不但着重讲解了每个实战案例所涉及的基础知识、思路和方法,也详细解释了源码的关键部分,希望有利于读者的学习和理解。
《Node.js实战(第2季)》适合有一定Node.js基础及服务器端开发基础的读者阅读,也适合想了解Node.js可以做什么、想迅速上手实践的读者阅读。
作者简介
吴中骅,现于同程旅游担任系统架构师,也负责在同程旅游开展Node.js项目,非常享受Node.js的高性能和异步带来的编程愉悦感。
雷宗民,一登后台开发工程师,2011年6月开始接触Node.js,从此开始各种折腾与造轮子。
赵坤,现于北京红树岛信息科技有限公司工作,热爱互联网,崇尚开源精神。2013年偶遇Node.js,相见恨晚,从此开始一条Node.js不归路。
刘亚中,GitHub发烧友、Node.js源码贡献者,以Node.js Ninja身份先后参与国内外多个创业项目如Pixbi、Fireball、WeFlex、51Degrees等,并参与维护其中的部分开源项目。
目录
第1章 通过Docker快速发布Node.js应用/ 1
1.1 什么是Docker /1
1.2 Nginx作为Node.js前端Web Server的作用 /3
1.3 安装Docker和下载Images镜像/ 5
1.4 Docker常用命令 /8
1.5 启动Container盒子 /10
1.6 文件卷标加载/ 11
1.7 将多个Container盒子连接起来 /13
1.8 不要用SSH连接到你的Container盒子 /15
1.9 配置DockerImages镜像和发布应用/ 19
1.10 什么是Jenkins/ 26
1.11 通过Docker安装和启动Jenkins /28
1.12 配置Jenkins并自动化部署Node.js项目/ 29
1.13 小结/ 36
1.14 参考文献/ 37
第2章 开发OAuth2认证服务器 /38
2.1 本章所用到的第三方模块/ 38
2.2 REST风格的API/ 39
2.3 定义返回数据格式/ 40
2.4 实现简单的API/ 41
2.4.1 扩展Response对象/ 41
2.4.2 统一处理出错信息/ 43
2.4.3 实现简单的API/ 43
2.4.4 API版本/ 44
2.5 关于OAuth认证/ 45
2.5.1 OAuth 2.0授权流程/ 45
2.5.2 OAuth 2.0授权详解/ 45
2.5.3 定义授权接口/ 48
2.6 实现OAuth认证/ 48
2.6.1 OAuth2/authorize接口/ 48
2.6.2 OAuth2/access_token接口/ 52
2.6.3 在处理API请求前验证Access Token/ 55
2.6.4 Access Token过期的问题/ 56
2.7 实现API客户端/ 58
2.8 API传输过程中的安全问题/ 62
2.9 API请求频率限制/ 63
2.10 让API返回结果支持不同的格式/65
2.10.1 通过后缀来指定返回的数据格式/ 65
2.10.2 通过Accept请求头来指定返回的数据格式/ 67
2.11 生成随机的测试数据/ 68
2.12 小结/ 69
2.13 参考文献及开源项目/ 70
第3章 基于RabbitMQ搭建消息队列/ 72
3.1 什么是消息队列,消息队列的优势/72
3.2 安装和启动RabbitMQ /75
3.3 RabbitMQ的Hello World/ 76
3.4 RabbitMQ的工作队列/80
3.5 RabbitMQ的PUB/SUB队列/ 84
3.6 RabbitMQ的队列路由 /89
3.7 RabbitMQ的RPC远程过程调用/ 94
3.8 基于RabbitMQ的Node.js和Python通信实例/ 99
3.9 RabbitMQ方案和HTTP方案的对比 /103
3.10 小结/ 117
3.11 参考文献 117
第4章 编写命令行工具——打造一个静态博客系统/ 118
4.1 本章所使用到的第三方模块/ 119
4.2 命令格式/ 120
4.2.1 常见的命令格式/ 121
4.2.2 定义静态博客命令格式/121
4.3 编写命令行工具/ 122
4.4 实时预览/ 126
4.4.1 启动Web服务器 /127
4.4.2 渲染文章页面/ 128
4.4.3 文章元数据/ 131
4.4.4 增加模板/ 132
4.4.5 渲染文章列表/ 136
4.5 生成静态博客/ 140
4.6 配置文件/ 146
4.7 创建空白博客模板/ 150
4.8 一些有用的第三方服务/ 153
4.8.1 评论组件/ 153
4.8.2 分享组件/ 154
4.9 小结/ 155
4.10 参考文献/ 156
第5章 基于Koa快速开发Web应用/ 157
5.1 ES6时代的来临/ 157
5.1.1 function和function*/ 158
5.1.2 yield和yield*/ 1605.1.3 co和Koa/ 162
5.2 模板系统/ 170
5.2.1 ejs和co-ejs/ 170
5.2.2 过滤器/ 173
5.3 路由/ 173
5.4 参数验证与错误处理/ 175
5.4.1 koa-scheme /175
5.4.2 koa-errorhandler/ 178
5.5 缓存和配置/ 182
5.5.1 koa-router-cache和co-cache /182
5.5.2 config-lite/ 184
5.6 测试/ 184
5.6.1 单元测试/ 184
5.6.2 co-mocha和co-supertest 185
5.7 开发一个论坛系统/ 189
5.7.1 基础项目搭建/ 189
5.7.2 路由和功能设计/ 193
5.7.3 自定义模型/ 194
5.7.4 theme的设计/ 200
5.7.5 注册/ 206
5.7.6 登录与登出/ 213
5.7.7 主页与版块/ 216
5.7.8 用户页/ 221
5.7.9 发表页与话题页/ 222
5.7.10 测试/ 228
5.7.11 部署 231
5.8 小结/ 233
5.9 参考文献/ 233
第6章 Node.js测试服务搭建 /235
6.1 概述/ 235
6.1.1 目的/ 2356.1.2 Pixbi/ 236
6.2 搭建后端测试服务/ 238
6.2.1 单元测试/ 239
6.2.2 功能性测试/ 259
6.2.3 可拓展性测试/ 260
6.3 搭建前端测试服务/ 261
6.3.1 PhantomJS/ 262
6.3.2 BrowserStack/ 266
6.3.3 Adobe CEP(Common Extensibility Platform)/269
6.4 加入持续集成工作流/ 271
6.5 小结/ 274
6.6 参考资料/ 276
第7章 使用Node.js绑定C语言库——51Degrees.node /277
7.1 开发背景/ 277
7.2 预备知识/ 279
7.2.1 51Degrees-C /279
7.2.2 C/C++中的Node.js API/ 282
7.2.3 使用nan/ 284
7.3 编码/ 285
7.3.1 项目初始化/ 285
7.3.2 创建v8胶水层接口/ 286
7.3.3 创建JavaScript代码/ 293
7.4 构建与发布/ 294
7.4.1 node-gyp与binding.gyp/ 294
7.4.2 发布/ 296
7.5 如何从nan 1.x升级到nan 2.x /296
7.6 后记/ 298
前言/序言
自本书第1季《Node.js实战(双色)》出版以来,JavaScript界又发生了许多重大事件:React.js和AngularJS 2.0相继出现;ES6于2015年年中正式定稿;io.js从Node.js社区中分裂出来,后又与其合并。截至本书出版时,npm上有接近18万的模块,是去年同期的3倍,周下载量接近5.6亿次,是2014年同期的10倍。越来越多的创业公司和大公司都不同程度地使用了Node.js, Node.js已经成为一门成熟、稳定且具有独特魅力的技术。
延续《Node.js实战(双色)》的写作思路,本书不会从头讲解Node.js是什么,而是面向有一定Node.js基础的读者,建议读者把本书当作入门与进阶之间的过渡书籍来阅读。本书通过7个实例来讲解Node.js在不同场景下的应用,通过阅读本书,读者可以快速熟悉并使用Node.js进行开发。本书由4位作者共同编写,其中吴中骅完成了第1、3章的创作,雷宗民完成了第2、4章的创作,赵坤完成了第5章的创作,刘亚中完成了第6、7章的创作。
第1章主要介绍了如何使用Docker快速发布一个Nginx+Express+Redis项目,然后使用Jenkins进行简单的持续集成发布工作,其中介绍了Docker的基础概念、用法和Jenkins的安装配置方法。
第2章介绍了当前比较流行的OAuth2认证。OAuth2认证是当API服务器对外提供服务时,验证API使用者权限的有效的认证方式。本章主要介绍了使用Node.js搭建一个基本的API服务器所涉及的组件、方法和技术细节。
第3章主要介绍了如何在Node.js中使用消息队列软件RabbitMQ来解决Web服务器或应用服务器间的通信问题。对于服务器间的跨语言通信,以前一般采用XMLRPC方式,而现在比较流行采用HTTP的RESTful方式,使用RabbitMQ能够很灵活地处理这些事情。
第4章以一个静态博客系统构建工具作为实例,介绍如何使用Node.js的commander模块来编写一个命令行工具。
第5章介绍了ES6中生成器、yield,以及Node.js下一代Web开发框架Koa及其中间件的用法,最后通过搭建一个简单的论坛系统,让读者从实践中学习如何基于Koa快速开发Web应用。
第6章分享了作者在一家时尚杂志相关的互联网创业团队工作的部分经历:为该团队搭建一套较基础的Node.js测试服务,测试范围涵盖服务器、浏览器、Mag+、Adobe InDesign等平台。希望读者通过这个分享能够找到一种更为全面的方式去保证项目代码的质量。
第7章分享了作者与51Degrees团队远程工作的细节,可以让读者大致了解如何将一个已有的C/C++代码库拓展到Node.js平台上进行使用。
感谢电子工业出版社博文视点张国霞编辑的热心帮助和指导;感谢神猪、河蟹、AKI、何翊宇(dead_horse)、Kenneth Kan、Baptiste Gaillard、Jorn Zaefferer和Fish对本书的校验;再次感谢何翊宇为本书慷慨作序。
如果您对本书有任何评论或建议,可加入本书官方QQ群(156627943)进行讨论,或者到读者反馈网站http://nodejs.ucdok.com进行反馈,真诚欢迎您的意见与反馈。
Node.js实战(第2季) 电子书 下载 mobi epub pdf txt