Koa与Node.js开发实战
  • 推荐0
  • 收藏3
  • 浏览2.3K

Koa与Node.js开发实战

iKcamp , 薛淑英 (作者)  崔志伟 (责任编辑)

  • 书  号:978-7-121-35513-4
  • 出版日期:2018-12-10
  • 页  数:340
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:董英
电子书 ¥49.00
购买电子书
纸质版 ¥79.00
Node.js 10已经进入LTS时代!其应用场景已经从脚手架、辅助前端开发(如SSR、PWA等)扩展到API中间层、代理层及专业的后端开发。Node.js在企业Web开发领域也日渐成熟,无论是在API中间层,还是在微服务中都得到了非常好的落地。本书将通过Web开发框架Koa2,引领你进入Node.js的主战场!
本书系统讲解了在实战项目中使用Koa框架开发Web应用的流程和步骤。第1章介绍Node.js的安装、开发工具及调试。第2章和第3章介绍搭建Koa实战项目的雏形。第4章详细介绍HTTP基础知识及其实战应用。第5章介绍MVC、模板引擎和文件上传等实用功能。第6~8章介绍数据库、单元测试及项目的优化与部署。第9~13章介绍从零开始搭建时下火爆的微信小程序前端及后台管理应用的全部过程,以及最终的服务器部署,包括HTTPS、Nginx。
本书示例丰富、侧重实战,以完整的实战项目贯穿全部章节,并提供书中涉及的所有源码及部分章节的配套视频教程,将是前端开发人员立足新领域和后端开发人员了解Node.js并使用Koa2开发Web应用的得力助手。
基于Node.js平台的新一代Web开发框架Koa2,搭建真实线上实战项目
Koa2框架技术实战,配套免费在线音视频Koa2教程,让学习更容易
与微信小程序前后端搭配,玩转Koa2,全面掌握潮流技术
让你对Node.js——豁!然!开!朗!

Node.js诞生于2009年,到本书出版时已经有近10个年头。它扩充了JavaScript的应用范围,使JavaScript也能像其他语言一样操作各种系统资源,因此,前端工程化开发的大量工具都开始运行在Node.js环境中。由于Node.js采用事件驱动、非阻塞I/O和异步输出来提升性能,因此大量I/O密集型的应用也采用Node.js开发。掌握Node.js开发,既能极大地拓宽前端开发者的技术知识面,也能拓展前端开发者的生存空间,从目前前端开发者越来越多的环境中脱颖而出。
由于Node.js仅提供基础的类库,开发者需要自主合理地设计应用架构,并调用大量基础类库来进行开发。为了提升开发效率和降低开发门槛,相关技术社区涌现出不少基于Node.js的Web框架。
Express框架在Node.js诞生之初出现,并迅速成为主流的Web应用开发框架。在社区中,大量的第三方开发者开发了丰富的Express插件,极大地降低了基于Node.js的Web应用开发成本,同时也带动了大量的开发者选择使用Express框架开发Web应用。但Express框架采用传统的回调方式处理异步调用,对于经验不足的开发者来说,很容易将代码写成“回调地狱”,使开发的应用难以持续维护。在ECMAScript 6的规范中提出了Generator函数,依据该规范,Express的作者TJ Holowaychuk(https://github.com/tj)巧妙地开发了co库(https://github.com/tj/co),使开发者能够通过yield关键词,像编写同步代码一样开发异步应用,从而解决了“回调地狱”问题。2014年,他基于co库开发了新一代的Web应用开发框架Koa,用官方语言来描述这个框架就是“next generation web framework for Node.js”。
社区开发者为Koa开发了大量的插件,与Express相比,两者的处理机制存在根本上的差异。Express的插件是顺序执行的,而Koa的中间件基于“洋葱模型”,可以在中间件中执行请求处理前和请求处理后的代码。ECMAScript 7提供了Async/Await关键词,从语法层面更好地支持了异步调用。TJ Holowaychuk在Koa的基础上,采用Async/Await取代co库处理异步回调,发布了Koa第2版(简称Koa2)。随着Node 8 LTS(Long Term Support,长期支持)的发布,LTS版本正式支持ECMAScript 7规范,选择使用Koa开发框架开发的Node.js Web应用也越来越多,Koa框架逐步取代了Express框架。
尽管目前Koa非常流行,但“纯天然”支持ECMAScript 7语法的Node.js 8在2017年10月才正式发布。目前,市面上介绍Koa的书籍几乎没有,大多介绍的是Express框架,本书可以说是第一本介绍Koa的书籍。本书从Node.js基础、HTTP、Koa框架、数据库、单元测试和运维部署等方面全方位地介绍了应用开发所应具备的知识体系。通过阅读本书,读者可以了解Node.js开发的方方面面,减少实际开发中出现的问题。同时,本书的重点章节也提供了线上代码讲解和视频,读者可以在阅读本书的同时,结合线上代码讲解和视频,更容易地理解本书介绍的知识。
特别感谢杜珂珂、哈志辉、姜帅、李波、李益、盛瀚钦、田小虎、徐磊、闫萌、赵晨雪(排名不分先后)对线上培训音视频课程资源的开发和支持。
本书特色
? 重点章节附带教学视频。
为了便于读者理解本书的内容,一些基础、重点的内容配有视频教程。读者可以访问https://ikcamp.com,结合书中内容观看视频。
? 所有源码托管于GitHub。
为了降低读者获取源码的难度,本书的所有源码都托管于GitHub(https://github.com/ ikcamp),读者也可通过GitHub直接和本书作者沟通。
? 一线互联网公司Node.js技术栈实战经验总结。
本书补充了前端开发者所不具备的后端开发技能和规范,介绍了如何开发Koa应用,如何通过ORM(Object Relational Mapping,对象关系映射)类库读写数据库,如何通过单元测试来保障代码质量,如何通过PM2、CI等方式启动并部署Node.js应用,以及如何采用日志、监控来保障线上应用的稳定运行等内容。
? 典型项目案例解析,实战性强。
本书第3篇通过云相册小程序开发项目介绍了目前流行的小程序技术,包括小程序登录流程、扫码登录、文件上传、相册管理等功能。通过学习本书的相关内容,读者可以独立开发时下流行的小程序和其需要的后端服务。
本书知识体系
第1篇 基础知识(第1~4章)
这部分介绍了开发Koa应用需要具备的预备知识,包括Node.js入门、遇见Koa、路由和HTTP共4个章节。
在第1章中,介绍了Node.js的历史和发展过程,以及Node.js基础和环境准备。介绍了NPM(Node Package Manager,Node.js的第三方包管理工具),通过该包管理工具,开发者能够方便地使用大量的第三方软件包。本章还介绍了微软公司推出的免费开发工具:Visual Studio Code编辑器,以及如何使用该编辑器调试Node.js应用。
在第2章中介绍了Koa的发展历程和作为Koa核心技术的中间件。
在第3章中介绍了路由的概念,以及Koa中最流行的路由中间件koa-router。
在第4章中介绍了HTTP的基础知识,以及HTTP的后续协议HTTP/2;介绍了在Node.js中如何获取客户端传递来的数据,如何通过koa-bodyparser中间件获取请求中的body数据等。
第2篇 应用实战(第5~8章)
这部分介绍了应用开发各个环节的知识,包含构建Koa Web应用、数据库、单元测试、优化与部署共4个章节。
在第5章中介绍了MVC架构、模板引擎、静态资源,以及如何输出JSON数据,如何通过koa-multer中间件上传文件等。
在第6章中介绍了数据库的概念和以MySQL为代表的关系型数据库,以及如何通过ORM类库操作MySQL数据库;介绍了以MongoDB为代表的非关系型数据库,以及如何在Node.js中操作MongoDB;介绍了以Redis为代表的新型缓存数据库,以及如何在Node.js中利用Redis实现Session持久化。
在第7章中介绍了Chai断言库,它用来检测单元测试过程中的结果是否符合预期;介绍了Mocha测试框架,使用该框架可以编写和运行单元测试代码;介绍了使用SuperTest工具测试HTTP服务,以及通过Nock库模拟HTTP服务请求响应;最后,介绍了Nyc工具,用以检查单元测试的覆盖率、提升代码质量。
在第8章中介绍了如何记录日志和统一捕获异常,以及如何输出自定义错误页;介绍了如何通过PM2、Docker启动应用,如何通过CI集成发布应用,如何通过Nginx提供HTTPS支持;介绍了如何利用日志等途径监控服务器运行情况,以及如何利用PM2提供的Keymetrics监控云服务器。
第3篇 项目实战:从零开始搭建微信小程序后台(第9~13章)
这部分通过介绍时下最流行的小程序开发,结合具体的相册小程序来说明如何开发一个完整的小程序,以及如何部署小程序。其中,汇总本书前面章节的知识介绍了小程序的功能模块、接口开发、小程序开发、管理后台开发和服务部署。
在第9章中介绍了小程序应具备的产品功能及如何开发小程序门户网站。
在第10章中介绍了小程序登录流程,扫码登录的逻辑和实现方式,小程序中用到的接口和后台管理系统需要的接口。具体包括如何通过中间件来鉴权,如何统一控制后台管理系统的权限,如何通过Mongoose来定义数据模型和访问、存储数据,如何使用log4js记录日志。
在第11章中介绍了开发微信小程序的流程,以及如何借助微信开发者工具开发小程序。
在第12章中介绍了开发后台管理系统的整体架构和设计思路,并提供了一套登录与鉴权的技术方案。
在第13章中介绍了小程序相关服务的线上部署过程,包括对数据库、Nginx、HTTPS、和Koa服务的部署,具体包括如何通过Nginx实现把多个域名解析到同一台云服务器上,如何通过PM2管理应用。
本书适合读者
? Web前端开发人员
? 对Node.js应用感兴趣的开发人员
? Node.js开发的自学者
? 大中专院校相关专业的教师和学生
? 相关培训机构的学员

本书由陈达孚、金晶、干珺、张利涛、戴亮、周遥、薛淑英编写。本书涉及的技术知识点较多,作者团队成员虽竭力争取奉献好的作品以使技术得到更好的普及,但难免存在疏漏和不足,读者如有问题或建议,可以直接到iKcamp的GitHub上留言。本书源码也可前往GitHub上获取,地址为https://github.com/ikcamp。本书部分内容配有视频,可前往https://camp.qianduan.group/koa2/2/0/0观看。

读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),您即可享受以下服务。
? 提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
? 与作者交流:在页面下方 读者评论 处留下您的疑问或观点,与作者和其他读者一同学习交流。

页面入口:http://www.broadview.com.cn/35513

目录

第1篇 基础知识
第1章 Node.js入门 2
1.1 Node.js介绍 2
1.1.1 什么是Node.js 3
1.1.2 Node.js的历史和发展过程 4
1.1.3 Node.js的特点和应用场景 7
1.1.4 安装Node.js 8
1.1.5 实战演练:使用Node.js搭建一个HTTP Server 10
1.2 NPM 11
1.2.1 NPM介绍 12
1.2.2 NPM模块结构 13
1.2.3 使用NVM控制Node.js版本 16
1.2.4 Web代理工具NProxy 18
1.2.5 实战演练:在npm.org上发布一个模块 20
1.3 Visual Studio Code编辑器 22
1.3.1 Visual Studio Code的安装及其功能 22
1.3.2 使用Visual Studio Code调试Node.js 23
1.4 本章小结 25
第2章 遇见Koa 26
2.1 Koa介绍 26
2.1.1 Koa的前世今生 26
2.1.2 Koa的安装及搭建(视频演示) 29
2.2 Context对象 30
2.2.1 什么是Context对象 31
2.2.2 常用属性和方法 31
2.3 Koa的中间件 35
2.3.1 中间件概念 35
2.3.2 实战演练:使用中间件获取响应时间(视频演示) 38
2.3.3 常用Koa中间件介绍 39
2.4 本章小结 43
第3章 路由 44
3.1 路由介绍 44
3.1.1 路由的概念 45
3.1.2 实战演练:使用Koa中的简单路由自定义404页面 46
3.2 koa-router路由中间件 48
3.2.1 koa-router的安装和介绍 48
3.2.2 RESTful规范 48
3.2.3 koa-router用法(视频演示) 50
3.2.4 通过koa-router实现接口的权限控制 55
3.3 本章小结 58
第4章 HTTP 59
4.1 HTTP介绍 59
4.1.1 HTTP的诞生 59
4.1.2 URI和URL 62
4.1.3 常用的HTTP状态码 63
4.1.4 常用的请求方法 63
4.1.5 常用的HTTP首部字段 64
4.2 HTTP/2 65
4.2.1 采用二进制格式传输数据 65
4.2.2 多路复用 65
4.2.3 流的优先级 66
4.2.4 首部压缩 66
4.2.5 服务端推送 67
4.3 Node.js的querystring模块 67
4.3.1 querystring模块的使用 67
4.3.2 koa-router中的querystring(视频演示) 68
4.3.3 实战演练:电影搜索列表 69
4.4 koa-bodyparser中间件 72
4.4.1 koa-bodyparser介绍 72
4.4.2 koa-bodyparser的使用(视频演示) 73
4.4.3 实战演练:实现用户注册功能并进行数据解析 74
4.5 本章小结 77
第2篇 应用实战
第5章 构建Koa Web应用 80
5.1 MVC 80
5.1.1 MVC的发展历程 81
5.1.2 MVC三层架构 81
5.1.3 在Koa中实现MVC(视频演示) 83
5.2 模板引擎 87
5.2.1 什么是模板引擎 88
5.2.2 常见的模板引擎有哪些 88
5.2.3 Nunjucks语法介绍 91
5.2.4 Nunjucks在Koa中的应用(视频演示) 96
5.3 静态资源 97
5.3.1 静态资源的类型 98
5.3.2 koa-static简介 99
5.3.3 koa-static常用配置(视频演示) 99
5.3.4 实战演练:开发登录验证页面(视频演示) 100
5.4 其他常用开发技巧 103
5.4.1 简易版koa-json插件开发(视频演示) 103
5.4.2 使用koa-multer中间件实现文件上传 106
5.5 本章小结 110
第6章 数据库 111
6.1 数据库介绍 111
6.1.1 什么是数据库 111
6.1.2 常见的数据库 113
6.2 在Koa中应用MySQL数据库 114
6.2.1 下载安装MySQL 114
6.2.2 Sequelize介绍 118
6.2.3 实战演练:客户信息数据展现 122
6.3 在Koa中应用MongoDB数据库 126
6.3.1 下载安装MongoDB 126
6.3.2 Mongoose介绍 128
6.3.3 实战演练:课程表数据展现 132
6.4 在Koa中应用Redis数据库 135
6.4.1 什么是Redis 135
6.4.2 Redis库介绍 138
6.4.3 实战演练:持久化用户Session状态 141
6.5 本章小结 145
第7章 单元测试 146
7.1 Chai断言库 147
7.1.1 Chai的介绍和安装 147
7.1.2 Chai的使用 147
7.2 Mocha框架 149
7.2.1 Mocha的介绍和安装 150
7.2.2 Mocha的使用 150
7.3 SuperTest测试RESTful API 154
7.3.1 SuperTest的介绍和安装 154
7.3.2 SuperTest的使用 154
7.4 其他常用工具 155
7.4.1 Nock模拟服务器响应 156
7.4.2 Nyc测试覆盖率 157
7.5 本章小结 159
第8章 优化与部署 161
8.1 服务优化 161
8.1.1 使用log4js记录日志(视频演示) 162
8.1.2 自定义错误页(视频演示) 168
8.1.3 异常捕获处理 173
8.1.4 实战演练:优化Web开发项目结构(视频演示) 176
8.2 部署 179
8.2.1 Node.js进程管理器PM2 179
8.2.2 应用容器引擎Docker 182
8.2.3 在线免费开源集成Travis CI 185
8.2.4 利用Nginx部署HTTPS 189
8.3 服务监控 192
8.3.1 Node.js服务性能指标及采集 192
8.3.2 日志分析系统ELK 196
8.3.3 Keymetrics监控云服务 197
8.4 本章小结 199
第3篇 项目实战:从零开始搭建微信小程序后台
第9章 云相册功能介绍和准备工作 203
9.1 应用介绍 204
9.2 小程序开发账户申请 206
9.3 准备域名 209
9.3.1 注册域名 209
9.3.2 实名认证 211
9.3.3 域名备案 212
9.4 准备云服务器 216
9.5 配置DNS解析 218
9.6 本章小结 221
第10章 云相册服务开发 222
10.1 小程序登录 222
10.2 扫码登录 230
10.3 小程序接口 236
10.3.1 建立数据模型 236
10.3.2 定义相册接口 238
10.3.3 定义照片接口 242
10.4 后台管理系统接口 244
10.4.1 定义用户列表接口 244
10.4.2 定义权限管理接口 246
10.4.3 定义获取照片接口 247
10.4.4 定义审核照片接口 249
10.5 记录日志 249
10.6 本章小结 252
第11章 云相册小程序开发 254
11.1 项目介绍 254
11.2 结合Redux实现小程序组件通信 259
11.3 “个人中心”页面 264
11.4 “新建相册”页面 267
11.4.1 自定义组件用法介绍 267
11.4.2 组件事件 269
11.4.3 实现“新建相册”组件 270
11.5 “相册列表”页面 272
11.5.1 展示相册列表 273
11.5.2 进入指定相册页面 274
11.5.3 调用“新建相册”组件 274
11.6 “照片列表”页面 275
11.6.1 获取照片列表数据 276
11.6.2 数据按日期分组 277
11.6.3 上传照片到当前相册 278
11.6.4 单击图片显示高清大图 279
11.7 小程序审核发布 280
11.8 本章小结 282
第12章 云相册后台管理系统 283
12.1 整体架构 284
12.1.1 基本文件结构 285
12.1.2 前端模板结构 287
12.1.3 路由设计 290
12.2 相册列表及相关功能 292
12.2.1 分类展示照片 293
12.2.2 审核照片 297
12.2.3 HTTP通信 301
12.2.4 分页控件 302
12.3 用户列表及相关功能 304
12.4 登录与鉴权 309
12.4.1 登录 310
12.4.2 鉴权中间件 315
12.5 额外展开:SVG动画效果及其他 317
12.6 本章小结 318
第13章 云相册服务器部署 319
13.1 部署数据库 321
13.1.1 存储设置 322
13.1.2 安全策略 323
13.2 部署Nginx 325
13.2.1 安装OpenResty 325
13.2.2 Nginx配置 326
13.2.3 插件扩展 328
13.3 部署HTTPS 329
13.3.1 强制HTTPS跳转 329
13.3.2 添加WWW跳转 330
13.4 配置Koa服务 331
13.5 本章小结 332

读者评论

  • 第九行 et extname 应该是 let extname

    小罗 1993发表于 2023/4/3 0:55:35
  • 31页:
    2.2.1 什么是Context对象
    这里动代码块里面的this指向,打印出来是为空的,因为this指向的不是Context;所以this;this.request;this.response;这些定义有误,望订正

    38页:
    2.3.2 使用中间件获取响应时间
    这里按照中间件的概念,console.log()输出的应该为

    1. 中间件 doSomething
    2. 中间件执行 over
    3. 请求地址: /, 响应时间: 1ms
      在这里中间件的流程就已经走完,无需再往下执行;输出有误,望订正
    leo_javaScript发表于 2020/10/22 23:37:25
  • 写本书中,bug很多,从代码对齐,到语法错误,到与事实不符,等,很容易误导开发者。烦请各位仔细校阅后,再发表圈钱。感觉从前部分章节来看,啰哩啰嗦,滚刀肉,来回掰扯。

    纠老师发表于 2020/2/11 10:28:21
  • 该书提供的视频网站都打不开,希望作者查看一下原因并尽快修复,或者告知需要通过什么方法才能观看,谢谢

    ytg灌灌灌灌发表于 2019/2/13 16:41:19

电子书版本

  • Epub

相关图书

写给大忙人的现代JavaScript

(德国)HORSTMANN, CAY S. (作者) 浙江阿里巴巴聚橙技术发展有限公司 (译者)

本书是一本简明的现代 JavaScript 教程,不仅涵盖函数式编程、JS 语法、JS 库等基础性内容,还介绍了国际化、异步编程、标准模块系统、元编程等较为复杂...

¥109.00

JavaScript 二十年

王译锋 (作者)

本书主要讲述了从 1995 年到 2015 年这20年间,JavaScript在创建、设计和演变方面所经历的过程。全书分为4个部分,每个部分都涵盖了 JavaS...

¥79.00

JavaScript语言精髓与编程实践(第3版)

周爱民 (作者)

本书详细讲述JavaScript作为一种混合式语言的各方面特性,包括过程式、面向对象、函数式和动态语言特性等,在动态函数式语言特性方面有着尤为细致的讲述。本书主...

¥144.00

狼书(卷2):Node.js Web应用开发

桑世龙 (作者)

目前市面的nodejs书籍基于0.10的为多,而基于最新4.X的非常少,本书是唯一一本基于node.js 4.0以上版本的书。而Koa是下一代node web的...

¥69.30

狼书(卷1):更了不起的Node.js

狼叔 桑世龙 (作者)

Node.js开发简单,性能极好,一经发布便成了明星级项目。随着大前端领域的蓬勃发展,跨平台开发、API构建、Web应用开发等场景愈加常见,Node.js也成为...

¥55.30

Vue.js快跑

Callum Macrae (作者) 刘腾辉 (译者)

本书是用Vue.js构建Web应用的全方位指南。作者运用细致入微的讲解方式带你领略Vue.js的独特魅力,致力于协助你从零开始基于Vue.js创建一个Web应用...

¥69.00