首页>参考读物>计算机科学与技术>软件与程序设计

Koa开发:入门、进阶与实战
作者 : 刘江虹 著
丛书名 : Web开发技术丛书
出版日期 : 2022-01-21
ISBN : 978-7-111-39086-2
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 256
开本 : 32
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

内容简介
这是一本能指导你零基础掌握Koa完整知识体系并深入理解Node.js难点的著作,将带领你在成为全栈工程师的道路上迈出坚实的一步。
本书作者是字节跳动抖音电商团队的前端架构师,曾利用Koa和Node.js等技术从零开发过一款可对标Egg的BFF框架,并在生产环境中能支撑上千个线上服务,在Koa和Node.js方面积累了丰富的经验。
这本书以入门、进阶、实战为学习曲线,从基本用法、底层实现、常见场景解决方案、难点和重点等等角度对Koa和Node.js进行了详细的讲解。主要包括如下如下知识点:
(1)Koa的基本概念和完整用法,构建完整的Koa知识体系;
(2)Koa的源码实现和底层原理分析;
(3)Koa在实际业务中遇到的问题及其解决方案;
(4)从零搭建一个企业级BFF框架;
(5)BFF框架的架构设计、工程建设以及常见业务场景的解决方案;
(6)Node.js中比较常见但难以理解的概念和知识点;
(7)Node.js底层架构解析。?
全书有大量实例和代码,能帮助读者在实践中迅速从新人成长为高手。

图书特色

抖音电商前端架构师撰写,抖音电商前端负责人、字节跳动Web Infra负责人、字节跳动技术中台前端负责人等技术专家力荐
从基本用法、底层实现、常见场景解决方案等多个维度全面讲解Koa,
轻松从零搭建企业级BFF框架

图书前言

为什么要写这本书
目前大型互联网公司对于前端工程师的需求越来越大,一些高级的前端岗位依然非常缺人,候选人的面试通过率却非常低。究其原因,这些互联网公司对于前端工程师的要求越来越高,它们希望候选人不局限于掌握浏览器,也要掌握一些偏后端的技能。对于前端工程师来说,因为其所用的编程语言就是我们熟悉的JavaScript,所以学习Node比较轻松。Koa是Node中使用比较广泛的一个框架,非常值得前端工程师学习,这是我写本书的主要原因。
我在上一家公司主要负责Node中间层架构,我开发的BFF框架服务于公司内部的各个业务。在任职期间,我不断帮助业务方解决线上、线下的各种疑难问题,这让我对Node有了更加深入的理解,并且积累了很多Node的使用经验。写这本书也是想分享我的一些经验,帮助大家在技术道路上走得更远,引导大家向全栈方向迈进。
Koa在业界使用比较广泛,很多知名的BFF框架(比如Egg)都基于Koa实现。如果能够透彻理解Koa,那么对于公司内部或者技术社区里的一些BFF框架就能够轻松驾驭。本书由浅入深地讲解了Koa的应用场景以及实例代码。
读者对象
想成为全栈工程师的前端技术人员。
希望顺利入职大型互联网公司的前端工程师。
对Node、Koa有学习热情的前端工程师。
对开源技术充满热情的前端工程师。
本书特色
本书除了讲解Koa的基础知识,还讲解了如何从零开始搭建一个企业级BFF框架,读者可以学到从架构设计到工程搭建的知识,也可以边学边写,自己写一个BFF框架,这样对于提升自身的技术能力有很大帮助。
如何阅读本书
本书分为四部分。
第一部分“Koa基础”(第1、2章),主要介绍Koa的基础概念以及基本用法。
第二部分“Koa进阶”(第3、4章),一方面讲解Koa的源码实现,帮助读者深入理解Koa的底层实现逻辑,另一方面着重讲解Koa在实际业务场景中可能会遇到的问题以及解决方法。
第三部分“Koa实战”(第5章)主要讲解如何从零开始搭建一个企业级BFF框架,涉及架构设计、工程建设以及企业内常见业务场景的解决方案。
第四部分“Node”(第6、7章),讲解Node中一些比较常见但难以理解的概念,并对Node底层架构进行解读。
这四部分内容由浅入深,涵盖了Koa的绝大多数知识点。读者只要掌握了本书内容,就一定能灵活运用Koa和Node。
勘误和支持
由于作者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果有疑问,欢迎将问题发送到我的邮箱ljhtianhong@163.com。期待得到你们的真挚反馈!
致谢
非常感谢李成银、李玉北、吴亮(月影)、陈辰四位前辈为本书写推荐语,在写作过程中他们也提供了很多帮助。
感谢抖音电商业务架构组的同事们,他们是张浩、王成、张志强、孙海阳、吕益行、谷云龙、李喆明、王锐、韩庆新、张亚钦、王玉旸、张超、耿琳淇。
感谢机械工业出版社华章分社的编辑杨福川、陈洁和韩蕊。他们的鼓励和帮助使我得以顺利完成全部书稿。
感谢我的妻子张蕾,她在生活中支持我、鼓励我,让我有动力写作。
谨以此书献给我最亲爱的家人,以及众多热爱Koa、热爱Node的朋友们!

上架指导

计算机\Web开发

封底文字

对于前端工程师来说,Node.js是一种非常友好的后端技术。本书结合大量实例,系统地讲解了Koa的概念及应用,值得想进阶成为全栈工程师的读者仔细品读。
——李成银 抖音电商前端负责人

本书深入浅出地介绍了Koa的基本概念,同时结合作者的实战经验讲解了如何基于Koa搭建一个完整的企业级BFF框架,十分适合想要入门这个领域的读者阅读。
——李玉北 字节跳动Web Infra负责人 

本书详细介绍了Koa这个优秀的服务端框架,同时帮助读者厘清了一些Web开发中在前端立场上容易被忽视的知识点以及Node的盲区,可帮助读者在Web开发领域快速成长。
——月影 字节跳动技术中台前端负责人

作为在开源社区中热度较高的前端项目,Koa在Node.js中的成功已经不言而喻了。江虹这本书以官方文档为基础,结合自己在使用Koa过程中的学习路径,给Koa初学者提供了不一样的视角,十分推荐Koa新人阅读。
——陈辰 字节跳动前端工程师

作者简介

刘江虹 著:作者简介
刘江虹
字节跳动抖音电商前端架构师,拥有多年前端架构工作经验。独立开发过一款可对标Egg的BFF企业级框架,支撑公司线上服务超过1000个。全栈前端技术专家,具备丰富的Node实战经验。
著有畅销书《React.js实战》。

图书目录

前言
第一部分 Koa基础
第1章 Koa介绍2
1.1 Koa的诞生2
1.2 如何全面掌握Koa3
1.3 环境准备5
1.4 本章小结7
第2章 Koa入门8
2.1 中间件的使用9
2.2 路由该怎么写11
2.2.1 原生路由实现11
2.2.2 利用koa-router中间件实现12
2.3 静态服务器14
2.3.1 koa-static中间件的使用15
2.3.2 如何实现一个静态服务器16
2.4 模板引擎18
2.4.1 ejs模板的使用18
2.4.2 pug模板的使用20
2.5 处理请求数据21
2.6 Cookie和Session22
2.6.1 你真的了解Cookie吗23
2.6.2 Session的秘密26
2.7 文件上传34
2.8 跨域问题38
2.9 重写URL43
2.10 优雅的错误处理44
2.11 本章小结48
第二部分 Koa进阶
第3章 Koa源码解析50
3.1 Koa目录结构50
3.2 Application都做了些什么52
3.2.1 Koa创建服务的原理52
3.2.2 中间件实现原理55
3.2.3 如何封装ctx60
3.2.4 handleRequest和respond做了什么63
3.2.5 异常处理66
3.3 Context的核心实现68
3.3.1 委托机制68
3.3.2 Cookie的操作73
3.4 request的具体实现75
3.5 response的具体实现82
3.6 本章小结86
第4章 Koa在业务场景中的应用87
4.1 路由技巧87
4.1.1 路由分割88
4.1.2 文件路由91
4.2 用户鉴权机制94
4.2.1 JWT鉴权94
4.2.2 单点登录101
4.3 数据存储115
4.3.1 数据库的使用115
4.3.2 Elasticsearch的接入122
4.4 进程管理130
4.4.1 进程的概念130
4.4.2 创建多进程130
4.4.3 进程通信134
4.5 日志处理136
4.5.1 log4js牛刀小试136
4.5.2 日志级别137
4.5.3 日志分类139
4.5.4 日志分割141
4.6 本章小结142
第三部分 Koa实战
第5章 搭建一个企业级BFF框架144
5.1 搭建BFF框架的好处144
5.1.1 技术成长145
5.1.2 个人影响力145
5.2 搭建完整框架145
5.2.1 主工程搭建146
5.2.2 框架核心工程147
5.2.3 example工程148
5.2.4 本地开发调试150
5.3 环境区分152
5.3.1 环境配置152
5.3.2 整合配置153
5.4 服务启动模块154
5.4.1 hooks设计154
5.4.2 服务配置157
5.4.3 服务启动模块实现157
5.5 路由模块159
5.5.1 路由模式配置159
5.5.2 文件路由159
5.5.3 koa-router路由162
5.6 静态服务器模块165
5.7 cors模块167
5.7.1 跨域现象167
5.7.2 cors相关配置169
5.7.3 cors核心实现170
5.8 自定义中间件174
5.8.1 中间件加载顺序174
5.8.2 加载自定义中间件175
5.9 登录模块177
5.9.1 鉴权模块实现177
5.9.2 Cookie的配置179
5.10 制定模板180
5.10.1 加载模板180
5.10.2 自定义模板181
5.11 bodyparser模块186
5.12 Redis模块187
5.12.1 Redis配置188
5.12.2 Redis对象挂载188
5.12.3 使用Redis190
5.13 MySQL模块191
5.13.1 数据库配置191
5.13.2 数据库连接192
5.13.3 数据库操作193
5.14 Elasticsearch模块194
5.14.1 连接配置194
5.14.2 挂载194
5.14.3 操作Elasticsearch195
5.15 日志模块196
5.15.1 业务日志有哪些197
5.15.2 日志模块实现197
5.15.3 具体使用场景200
5.16 单元测试203
5.16.1 mocha和chai203
5.16.2 编写测试用例204
5.17 发布npm包206
5.18 本章小结207
第四部分 Node
第6章 Node中的重要概念210
6.1 模块机制210
6.1.1 CommonJS规范211
6.1.2 模块加载原理212
6.2 Node中的I/O213
6.2.1 什么是无阻塞I/O213
6.2.2 无阻塞I/O原理213
6.2.3 事件循环214
6.3 进程与集群215
6.3.1 进程215
6.3.2 集群217
6.4 进程守护219
6.4.1 如何实现进程守护功能219
6.4.2 进程管理工具pm2221
6.5 Buffer和Stream225
6.6 垃圾回收原理227
6.6.1 V8内存结构227
6.6.2 垃圾回收机制229
6.7 本章小结230
第7章 Node底层解析231
7.1 Node整体架构231
7.2 深入理解Addon233
7.2.1 编译工具node-gyp233
7.2.2 Node插件开发234
7.3 V8如何解析代码237
7.3.1 V8的重要组成模块237
7.3.2 AST是什么238
7.3.3 如何查看字节码和汇编代码239
7.4 libuv架构240
7.5 本章小结242

教学资源推荐
作者: (美)Victor Shtern
作者: [美]梁勇(Y. Daniel Liang) 著
作者: 郑阿奇 彭作民
作者: [英] 约翰·M. 斯图尔特(John M. Stewart) 著
参考读物推荐
作者: [西班牙]大卫·米兰·埃斯克里瓦(David Millán Escrivá)[西班牙]维尼休斯·G.门东萨(Vinícius G. Mendonça) [美]普拉蒂克·乔希(Prateek Joshi)著