书籍作者:狼叔 | ISBN:9787121359064 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:3684 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
Node.js开发简单,性能极好,一经发布便成了明星级项目。随着大前端领域的蓬勃发展,跨平台开发、API构建、Web应用开发等场景愈加常见,Node.js也成为大前端开发的必备“神器”。本书主要讲解Node.js Web应用开发涉及的HTTP基础知识、常用开发框架、源码原理、数据库和项目实战,旨在向读者展示如何通过Node.js和Koa编写出更具前端特色的Web应用。本书还讲解了Koa中的核心中间件原理,展望了未来Web应用开发的发展方向。基于Node.js开发Web应用具有上手简单、开发快速、执行高效等特点,非常适合快速迭代,因此各位大前端领域及后端领域的测试、运维、软件开发从业者都可以阅读本书。
狼叔(网名i5ting),Node.js 技术布道者,“Node全栈”微信公众号作者,全栈技术实践者。曾就职于多家知名IT企业,从事前端开发、后端开发、数据分析等工作,目前负责公司内的Node.js开发和基础框架开发工作。
适读人群 :正在学习JavaScript开发的人;正从事JavaScript开发相关工作的Web工程师(不区分前端与后端);具有极客精神,想要深入研究JavaScript语言及Node.js的全栈工程师。
√ 狼叔千日奋笔,狼书一啸横空:Node.js首席布道师+一手创办垂直公号“Node全栈”+CNode技术社区活跃贡献者,艳压群芳,名动八方。
√ 狼书三卷一出,Node再无遗册:《狼书(卷1):更了不起的Node.js》+《狼书(卷2):Node.js Web应用开发》+《狼书(卷3):Node.js高级技术》,百万宏篇,精华尽现。
√ Node纵横全网,狼书更有良方:横跨前后端的深厚功底+阿里|优酷|去哪儿网高端项目练级+Web|移动|服务端架构担当,远非寻常,超出想象。
√ 狼书新老咸宜,Node进行到底:面向新人的超完整知识体系+面向进阶人群的超实用高级技巧+面向专家人群的超深邃原理剖析,遍布巧思,直指精髓。
前言
Koa是下一代Node.js Web框架。所谓的“下一代”是相对于Express而言的。Koa立身于最“潮”的异步流程控制特性,主要用于改进Node.js开发中的回调地狱痛点,可以说Koa是异步流程控制不断演进的必然产物。在所有的Node.js Web框架中,Koa无疑是最耀眼的一个。
Koa的生态是非常健全的,基于Koa编写Web应用可以应对多种场景。如果用得极致,甚至可以基于Koa在前端领域开发各种工具。
本书内容
本书以Node.js下一代Web框架Koa为核心,主要讲解Koa的基础知识、中间件原理和应用场景,旨在向读者展示如何基于Koa编写出更简单、更具工程化优势的Web应用。
本书共分8章,每章的内容简介如下。
第1章 下一代Web框架Koa
本章将介绍Koa框架的入门知识、优势、应用场景,Koa脚手架的编写方式,以及Node.js Web框架的演进过程。基于最新的AVA测试框架编写测试用例也是本章非常有特色的一节。
第2章 Koa核心扩展机制:中间件
本章将介绍Koa的核心中间件原理,以及Koa中常用的中间件:路由、视图、静态服务模块等。中间件机制是Koa的核心内容,因此本章内容非常重要。
第3章 HTTP必知必会
本章将介绍请求响应模型,也将对HTTP和HTTPS进行讲解,同时以mini-proxy和hiproxy为核心对前端最常用的代理进行讲解。
第4章 Koa练习
本章将结合第3章的HTTP相关知识进行Koa框架内置方法的练习,比如地址解析、参数获取、body解析、API开发,还将介绍各种测试模块和工具软件的用法。
第5章 数据库基础
本章将介绍Node.js数据库选型和MVC模型层的用法,以及使用Mongoose模块操作MongoDB的方法,其中涉及Mongoose中的一些进阶技巧:模型扩展、虚拟属性、回调钩子和插件机制。
第6章 数据库进阶
本章将在第5章的基础上介绍数据库中的进阶技巧:分页、关联查询、事务、性能调优等。通过本章大家能够对Node.js数据库选型掌握得更好。
第7章 前端视图模板
本章将从public目录讲起,介绍前端相关知识,主要涉及模板编译原理、Webpack进阶知识。本章还将介绍前后端分离和服务器端渲染的演进,并提出对未来Serverless环境下前端渲染层的见解。
第8章 项目实战
本章将以CNode项目为核心,介绍基于Egg.js框架的项目代码,还会介绍基于Docker快速开发Node.js Web应用的方法。
本书中的各章内容基本是相互独立的,因此各位读者可以挑选自己感兴趣的章节阅读。这本书是《狼书》系列图书的第2卷,第1卷主要介绍Node.js基础知识,第3卷主要介绍Node.js高级应用。3卷搭配阅读,效果更好。
目标读者
本书的目标读者有以下3类。
1.正在学习JavaScript开发,对JavaScript语言有基本的了解和熟悉度,且希望能够了解JavaScript发展情况的人。
2.正从事JavaScript开发相关工作,熟悉JavaScript的基本开发要领,在日常工作中经常接触Node.js,想要深入了解Web应用、BFF、API代理等内容,以进一步提升自我的Web工程师(此处不区分前端与后端)。
3.具有极客精神,想要深入研究JavaScript语言及Node.js的全栈工程师。
同时,本书也适合正使用其他编程语言(如Go、PHP、Python、Ruby、Java等)进行Web开发的工程师阅读、学习。
目录
第1章 下一代Web框架Koa 1
1.1 Koa简介 1
1.1.1 应用场景 2
1.1.2 开发要点 3
1.1.3 Koa入门 4
1.1.4 为什么选择Koa 7
1.2 Koa脚手架 8
1.2.1 安装Koa生成器 9
1.2.2 创建Hello world 10
1.2.3 目录解析 11
1.2.4 Koa v2中间件的写法 20
1.2.5 路由 21
1.2.6 切换视图模板引擎 25
1.2.7 Koa代码调试 26
1.3 Node.js Web框架演进 29
1.3.1 Node.js http模块 29
1.3.2 最早的Connect 29
1.3.3 曾经扛鼎的Express框架 33
1.3.4 新兴Web开发框架Koa 35
1.3.5 Express和Koa大比拼 38
1.4 测试 38
1.4.1 Node.js测试框架 39
1.4.2 AVA测试框架 39
1.4.3 测试用例与断言 40
1.4.4 实践 41
1.4.5 更多内容 44
1.5 本章小结 48
第2章 Koa的核心扩展机制:中间件 49
2.1 中间件 49
2.1.1 什么是中间件 49
2.1.2 上下文对象 57
2.1.3 回形针一样的中间件 66
2.1.4 常用中间件 88
2.2 路由 89
2.2.1 koa-router 89
2.2.2 路由详解 93
2.2.3 将路由放到目录里 98
2.3 视图 101
2.3.1 koa-views 101
2.3.2 默认模板引擎Pug 102
2.3.3 views目录模板说明 102
2.3.4 consolidate.js 104
2.4 静态服务模块 104
2.4.1 koa-static 105
2.4.2 koa-send 106
2.4.3 koa-mount 108
2.4.4 koa-serve-static 108
2.5 本章小结 109
第3章 HTTP必知必会 110
3.1 请求响应模型 110
3.1.1 请求 112
3.1.2 响应 112
3.1.3 核心要点 114
3.2 HTTPS 127
3.2.1 生成证书 129
3.2.2 验证与自动续约 130
3.2.3 Node.js服务器HTTPS配置 131
3.2.4 Nginx HTTPS配置 132
3.2.5 Nginx HTTPS反向代理配置 134
3.3 代理 136
3.3.1 协议支持 136
3.3.2 mini-proxy 140
3.3.3 hiproxy 146
3.4 本章小结 152
第4章 Koa练习 153
4.1 基础知识 153
4.1.1 地址 153
4.1.2 HTTP头部 156
4.1.3 HTTP动词 161
4.1.4 HTTP状态码 163
4.1.5 Cookie 164
4.2 获取不同参数的3种方法 165
4.2.1 获取具名参数 166
4.2.2 解析请求体 166
4.2.3 获取查询字符串 167
4.3 body解析 168
4.3.1 模块依赖 168
4.3.2 原理 168
4.3.3 常见的POST 169
4.4 请求的几种方式 175
4.4.1 表单 176
4.4.2 AJAX 176
4.4.3 命令行 177
4.4.4 HTTP模块 178
4.4.5 工具软件 183
4.4.6 测试 183
4.5 API开发 185
4.5.1 API的简单写法 185
4.5.2 响应处理 189
4.5.3 RESTful API 190
4.5.4 API访问鉴权 192
4.5.5 OAuth鉴权 194
4.6 常用中间件 195
4.6.1 会话 196
4.6.2 ETag 198
4.6.3 验证码 199
4.6.4 限制访问频率 201
4.7 本章小结 203
第5章 数据库基础 204
5.1 入门 204
5.1.1 选择哪个数据库 204
5.1.2 了解MVC里的模型 206
5.1.3 模型的代码 207
5.1.4 代码组织结构 209
5.2 MongoDB的安装与部署 210
5.2.1 安装与部署的方式 211
5.2.2 在macOS上安装 212
5.2.3 在Ubuntu上安装 212
5.2.4 在Windows上安装 213
5.2.5 更好的启动方式 213
5.3 Mongoose基础 214
5.3.1 简介 214
5.3.2 入门 215
5.3.3 Hello Mongoose 218
5.3.4 核心概念 221
5.3.5 增删改查操作 223
5.3.6 Schema的类型 232
5.4 Mongoose进阶 234
5.4.1 模型扩展 234
5.4.2 虚拟属性 237
5.4.3 回调钩子 240
5.4.4 插件机制 244
5.5 本章小结 253
第6章 数据库进阶 254
6.1 分页 254
6.1.1 使用skip和limit实现分页 255
6.1.2 使用find和limit实现分页 256
6.1.3 ObjectID的组成 257
6.1.4 客户端生成ObjectID 259
6.2 关联查询 259
6.2.1 聚合函数 260
6.2.2 聚合管道 261
6.2.3 MapReduce 263
6.2.4 关联关系 264
6.2.5 aggregation 266
6.3 事务 270
6.3.1 二阶段提交法 270
6.3.2 回滚操作 273
6.4 性能调优 274
6.4.1 profile 275
6.4.2 explain 275
6.4.3 索引优化 276
6.4.4 MongoDB的连接问题 282
6.4.5 MongooseDao 289
6.4.6 异步流程控制 296
6.5 本章小结 303
第7章 前端视图模板 304
7.1 静态服务器 304
7.1.1 public目录 304
7.1.2 实现原理 306
7.1.3 静态服务 307
7.1.4 预处理中间件 314
7.2 使用模板引擎进行动态渲染 316
7.2.1 模板引擎原理 316
7.2.2 模板引擎规则 324
7.2.3 Vue 333
7.3 Webpack 342
7.3.2 模块规范 344
7.3.3 模块加载器 345
7.3.4 模块打包器 345
7.3.5 Webpack详解 346
7.4 前后端分离 357
7.5 前端渲染 357
7.5.1 客户端渲染 357
7.5.2 服务器端渲染 358
7.5.3 React服务器端渲染 360
7.5.4 Serverless时代的渲染层 363
7.6 本章小结 365
第8章 项目实战 366
8.1 入门 366
8.1.1 Docker 366
8.1.2 Docker Compose 369
8.1.3 环境变量 370
8.1.4 启动服务器 373
8.2 Egg.js框架 373
8.2.1 使用脚手架 374
8.2.2 目录说明 375
8.2.3 启动服务器 379
8.2.4 代码结构 381
8.2.5 内置对象 384
8.2.6 代码调试 386
8.2.7 插件扩展机制 387
8.3 egg-cnode源码 388
8.3.1 目录约定 388
8.3.2 app目录 390
8.3.3 数据库连接 391
8.3.4 模型定义 392
8.3.5 从Controller到Service 393
8.3.6 视图渲染 396
8.3.7 数据模型 399
8.3.8 API开发 400
8.3.9 测试 403
8.3.10 鉴权 404
8.3.11 后台管理 412
8.3.12 参数校验 412
8.4 本章小结 413