《Node.js 实战(双色)》通过8 个实例讲解了Node.js 在实战开发中的应用,涉及Node.js 常用框架、非关系型数据库、关系型数据库、运维命令和网络安全等内容。章节按照从简单到复杂的难度排序,每一章都通过一个有趣的实例指引读者从头开发一个应用,让读者可以循序渐进地学习Node.js,以及在实战开发中的编程技巧。
《Node.js 实战(双色)》面向的是有一定Node.js 基础的读者,建议读者把本书当作入门书和进阶书之间的过渡书籍来阅读。当然,《Node.js 实战(双色)》也适合那些有其他服务器编程语言基础,并且想尝试Node.js 新鲜技术的人阅读。
编辑推荐
因为CNode社区点击率颇高、粉丝数万的《一起学node.js》,我认识了《Node.js实战》这本书的几位作者,他们在CNode社区内的贡献、与粉丝跟帖及回复频率,文章更新速度,让我确定了与其合作的想法。很高兴,《Node.js实战》没有成为教条式的入门级别,而是跳出Node.js入门的圈子,真正进入Node.js实战层次。《Node.js实战》的内容架构也是由简入难的,Node.js入门级读者也可从中得到灵感。对《Node.js实战》的内容用6个字可以总结:让人大呼过瘾!废话不多说了,目录就在下方,赶快看吧,绝对物超所值。
本书中的实例涵盖了Node.js开发的各个部分,大到项目架构创建、小到每一次I/O操作,在本书中都有详细的介绍。请阅读本书,将你的想法运行在你的Node进程上。
——袁锋(@Python发烧友)某网数据产品部资深Web开发工程师,CNode.org社区核心成员
如果你想用Node.js快速开发一个个人博客;如果你想用Node.js做一个爬虫程序,定时获取你想要的东西;如果你想用Node.js打造实时Web应用;如果你想让Node.js支持多线程;如果你想在npm上发布一个自己的package;如果你想让自己的Node.js站点更加安全;那么,你就需要拥有这本《Node.js实战》,本书对这些内容有详尽的实例供您参考。
——田永强(@朴灵)就职于某网站数据平台,Node.js布道师,《深入浅出Node.js》作者
无论是国家还是我们个人,都必须关注安全问题;同样,互联网安全也与每个互联网开发人员休戚相关。这本书介绍了使用Node.js开发Web应用可能面临的安全问题,以及抵御一些常规恶意攻击的各种防御措施,并搭建了一个安全的Web站点,其内容让人印象深刻。
——谢骋超(@圈圈套圈圈)网易Pomelo开源分布式网络游戏框架总负责人
本书是我看过的最贴近实战开发的Node.js书籍之一,虽然它由4位作者合力完成,写作风格难免有所不同,但是通读本书后,4位作者带来的精彩章节却让我大呼过瘾,有继续阅读下去的强烈欲望。感谢4位作者为我们这些Node.js爱好者带来了这本充满经验和知识的《Node.js实战》。
——张轩丞(某网花名朋春)就职于某网站数据平台 曾主导开发的ITier(标准数据中间层)、MyFox(分布式MySQL集群代理层)
第1章 使用Express + MongoDB搭建多人博客.................. 1
1.1 一个简单的博客.......................... 2
1.1.1 学习环境......................... 2
1.1.2 快速开始......................... 2
1.1.3 路由控制......................... 7
1.1.4 模板引擎....................... 11
1.1.5 搭建多人博客............... 13
1.1.6 使用数据库................... 17
1.1.7 注册和登录................... 21
1.1.8 发表文章....................... 35
1.2 使用Markdown............................... 40
1.3 增加文件上传功能.................... 42
1.4 实现用户页面和文章页面................... 45
1.5 增加编辑与删除功能................ 49
1.6 实现留言功能............................ 54
1.7 实现分页功能............................ 57
1.8 增加存档页面............................ 60
1.9 增加标签和标签页面................ 62
1.10 增加pv统计和留言统计..................... 68
1.11 增加文章检索功能....................... 70
1.12 增加友情链接......................... 72
1.13 增加404页面........................... 73
1.14 增加用户头像......................... 74
1.15 增加转载功能和转载统计............ 77
1.16 增加日志功能......................... 84
1.17 小结......................................... 85
第2章 使用Express+MongoDB搭建多人博客番外篇.................... 87
2.1 番外篇之一——使用Passport....................... 88
2.2 番外篇之二——部署到Heroku................................... 91
2.3 番外篇之三——使用Mongoose...................... 95
2.4 番外篇之四——使用Async.......................... 98
2.5 番外篇之五——使用KindEditor.................... 102
2.6 番外篇之六——使用Handlebars................ 105
2.7 番外篇之七——使用KindEditor............. 109
第3章 使用Redis搭建漂流瓶服务器..............................111
3.1 初识Redis.................................. 112
3.2 开始漂流瓶之旅............................. 119
3.3 讨厌的海星................................... 127
3.4 扔回海里......................................... 127
3.5 今天的瓶子已经用完啦.................. 129
3.6 我的瓶子.................................. 131
3.7 女神,我们做朋友吧....................... 134
3.8 部署.......................................... 137
3.9 小结.......................................... 139
3.10 参考文献............................... 139
第4章 使用Meteor搭建微博网站................ 141
4.1 Meteor简介............................. 142
4.2 Meteor的安装与使用................. 142
4.3 快速入门.................................. 145
4.3.1 测试一:客户端和服务器端执行同一段代码............ 156
4.3.2 测试二:响应式............. 156
4.3.3 测试三:insecure包................ 157
4.3.4 测试四:autopublish包.............................. 159
4.3.5 测试五:加载顺序............... 161
4.4 开始搭建微博网站.................................... 161
4.4.1 开发环境............................ 161
4.4.2 学习目标.......................... 162
4.4.3 创建应...................................... 162
4.5 路由功能....................................... 165
4.6 用户注册..................................... 169
4.7 用户登录.................................. 173
4.8 发表微博.................................. 174
4.9 使用Markdown.................................. 176
4.10 部署....................................... 177
4.11 小结....................................... 179
4.12 参考文献.................................. 179
第5章 使用socket.io+Angular打造单页应用.......................... 181
5.1 最简单的聊天室............................ 182
5.1.1 socket.io简介..................... 182
5.1.2 Angular.js................................. 182
5.1.3 开始新建TechNode目录.............. 182
5.1.4 express.js服务器.................... 183
5.1.5 安装Bootstrap和Angular.js........ 185
5.1.6 搭建聊天室......................... 186
5.1.7 开始与好友聊天................ 192
5.2 让用户不再匿名........................... 192
5.2.1 添加登录功能..................... 192
5.2.2 用户登录与认证................ 195
5.2.3 socket.io验证...................... 200
5.2.4 显示用户名和在线用户列表................................. 202
5.2.5 我不喜欢你们................................ 211
5.3 提供不同的房间................................ 211
5.3.1 设计房间列表页面............................. 211
5.3.2 添加房间API.......................... 212
5.3.3 实现room的controller................. 213
5.3.4 提供socket的房间API................ 214
5.3.5 登录后跳转至房间列表.............. 215
5.3.6 房间列表............................. 216
5.3.7 进入单独的房间........................ 219
5.3.8 让消息只在房间内传递................... 224
5.3.9 用户离开房间.......................... 225
5.3.10 坏代码的味道...................... 227
5.4 架构优化与发布....................... 227
5.4.1 项目结构..................... 228
5.4.2 分拆http和socket服务...................... 229
5.4.3 客户端缓存................. 231
5.4.4 使用Grunt打包TechNode..... 236
5.4.5 发布TechNode.................. 242
5.4.6 聊天室之旅结束啦.................. 242
第6章 网络爬虫与数据操作........................... 243
6.1 学习目标.................................. 244
6.2 网络爬虫.................................. 245
6.2.1 相关模块介绍.................. 246
6.2.2 创建网络爬虫前的准备工作................................. 253
6.2.3 获取文章分类列表...................... 254
6.2.4 获取分类下的文章列表............... 257
6.2.5 获取文章的内容.................. 262
6.2.6 获取文章分类下的所有文章................................... 264
6.2.7 将结果保存到数据库中................... 267
6.2.8 保存文章分类............................. 269
6.2.9 一个完整的爬虫实例............... 270
6.3 显示数据库中的数据.............................. 279
6.3.1 相关模块介绍......................... 279
6.3.2 创建Web服务器前的工作........................... 280
6.3.3 查询数据.................................... 281
6.3.4 博客首页.................................. 283
6.3.5 文章页面................................. 285
6.4 自动更新文章数据.................................. 286
6.4.1 相关模块介绍.............................. 287
6.4.2 准备工作........................... 290
6.4.3 定时执行更新任务............................... 290
6.5 让程序更稳定地运行................................. 291
6.5.1 处理uncaughtException事件................................ 291
6.5.2 使用pm2来启动程序.................................. 291
6.5.3 安装pm2........................................... 292
6.5.4 启动和停止程序..................... 292
6.6 处理 GBK 编码的网页.......................... 292
6.7 小结.......................................... 294
6.8 参考文献.................................. 294
第7章 Node.js的进程与线程............................ 295
7.1 Node.js和PHP................................. 296
7.2 单线程的Node.js............................... 298
7.3 单线程的优缺点.......................... 298
7.4 多线程...................................... 300
7.5 多进程...................................... 305
7.6 多进程和多线程使用的比较................ 310
7.7 总结.......................................... 314
7.8 参考文献.................................. 315
第8章 发布一个Package............................ 317
8.1 Node.js包解决的问题...................... 318
8.2 创建package.json............................ 318
8.3 设计package的文件目录..................... 319
8.4 纯js包开发............................... 321
8.5 安装node-gyp......................................... 323
8.6 创建binding.byp............................... 324
8.7 C++插件包开发............................ 324
8.8 包的测试.................................. 330
8.9 跨平台测试................................. 333
8.10 readme.md......................................... 334
8.11 发布到GitHub............................ 334
8.12 发布到npm............................. 334
8.13 状态图标............................... 335
8.14 总结....................................... 336
8.15 参考文献............................... 337
第9章 Web安全实战............................... 339
9.1 什么是Web安全............................ 340
安全的定义和意识........................ 340
9.2 Node.js中的Web安全................ 341
HTTP管道洪水漏洞...................... 341
9.3 SQL注入....................................... 343
9.4 XSS脚本攻击................................ 345
9.5 CSRF请求伪造............................. 350
9.6 应用层DoS拒绝服务................... 358
9.7 文件路径漏洞............................... 366
9.8 加密安全.......................................... 372
9.9 小结.............................................. 375
9.10 参考文献.................................. 375
商务智能-第二版 本书特色 商务智能是近年来企业信息化的热点,有着广阔的应用前景。赵卫东编著的《商务智能(第2版)》首先介绍了商务智能的基本概念、商务...
《Visual C++程序开发参考手册》内容简介:本书是一本VisualC 综合参考手册,介绍了VisualC 程序开发中涉及的各种函数、类及方法。
计算理论与符号逻辑 内容简介 《计算理论与符号逻辑》对计算理论和数理逻辑中一组*为基本的问题和重要概念进行详细介绍.以boolos等的经典教材computabi...
《一本书读懂互联网思维》内容简介:每个人都看得懂的互联网思维入门书。本书从互联网思维的定义到互联网思维应用的具体案例表现。
《文臣的一天(古代人的一天·第二辑)》内容简介:在漫长的历史发展过程中,中国古代逐步形成了一套规范、严密的文官制度,来保证
Windows操作系统原理(第2版) 本书特色 Windows操作系统是微软公司开发的个人电脑操作系统,一经推出便以其方便性、易用性征服了广大用户,迅速成为应用...
《价值发现》内容简介:市场上关于价值投资的图书多如牛毛,但绝大部分偏于理念阐述而缺乏实战案例,读者即便理解了价值投资理念,
《孩子们的小提琴练习曲3(缩编版)》内容简介:本书包括了沃尔法特、开塞、马扎斯、顿特、克莱采尔的练习曲,这些练习曲接近按照技
中学物理课件制作四合一:Flash MX/Authorware 7.0/PowerPoint XP/几何画板 本书特色 多媒体CAI课件制作是每一位教师**的一...
《无界:数字镜像世界的到来》内容简介:当真实与虚拟叠加,未来将变成机器可读的世界。镜像世界是由耶鲁大学计算机科学家大卫·盖
UDA是一种专门为提高并行程序开发效率而设计的计算架构。在构建高性能应用程序时,CUDA架构能充分发挥GPU的强大计算功能。《GPU高
《Python编程零基础入门》内容简介:本书是一本真正地从零开始讲解Python编程的图书,它旨在让零基础读者较快地掌握编程知识,并能
《零成本实现Web性能测试:基于ApacheJMeter》是一本关于Web性能测试的实战书籍,读者朋友们在认真阅读完《零成本实现Web性能测试
手感設計之所以會成為日本設計的特色,就在於日本人將設計不只是視之為功能的詮釋品而已。設計代表了文化、便利生活的器具、成為
PHP+MySQL网站开发入门与提高-(附DVD1张) 本书特色 本书从初学者的角度出发,由浅入深、循序渐进地介绍了php应用与开发的相关知识,并提供了大量的p...
《看图学女性家庭健身(视频版)》内容简介:想要拥有美好的身材,不一定非要到健身房。只要你有一副小哑铃,一条弹力带,一个瑞士
Java 7 编程高级进阶 本书特色 《java7编程高级进阶》包含了众多专家级编程技术,学习这些技术可以让你的java水平上升至一个新的台阶。借助真实环境下的...
《从零开始学PHP》是关于PHP的入门教程。PHP作为一种被广泛应用的Web语言,由于其自身的优秀特性,已经有越来越多的网站采用PHP技
地理空间元数据关联网络构建与应用 本书特色 在介绍相关研究背景与意义、国内外研究现状、相关理论方法的基础上,本书阐述面向关联数据的地理空间数据语义关联网络构建方...
《聊将锦瑟记流年 : 黄仲则诗传》内容简介:是古典诗词赏析第一人安意如,三年心血写著。33万精辟文字,凝聚十年诗词赏读所成,首度