Web前端技术丛书 新时期的Node.js入门PDF电子书下载
- 电子书积分:11 积分如何计算积分?
- 作 者:李锴著
- 出 版 社:北京:清华大学出版社
- 出版年份:2018
- ISBN:9787302487807
- 页数:279 页
第1章 基础知识 1
1.1 Node是什么 1
1.1.1 Node与JavaScript 1
1.1.2 runtime和VM 2
1.2 Node的内部机制 3
1.2.1何为回调 3
1.2.2同步/异步和阻塞/非阻塞 4
1.2.3单线程和多线程 6
1.2.4并行和并发 7
1.3事件循环(Event loop) 8
1.3.1事件与循环 8
1.3.2 Node中的事件循环 9
1.3.3 process.nextTick 13
1.4总结 16
1.5参考资源 16
第2章 常用模块 17
2.1 Module 17
2.1.1 JavaScript的模块规范 17
2.1.2 require及其运行机制 18
2.1.3 require的隐患 20
2.1.4模块化与作用域 20
2.2 Buffer 22
2.2.1 Buffer的构建与转换 23
2.2.2 Buffer的拼接 24
2.3 File System 26
2.4 HTTP服务 30
2.4.1创建HTTP服务器 30
2.4.2处理HTTP请求 32
2.4.3 Response对象 34
2.4.4上传数据 35
2.4.5 HTTP客户端服务 38
2.4.6创建代理服务器 39
2.5 TCP服务 40
2.5.1 TCP和Socket 41
2.5.2创建TCP服务器 41
2.6更安全的传输方式——SSL 42
2.6.1什么是S SL 43
2.6.2 SSL原理 43
2.6.3对称加密与非对称加密 44
2.6.4关于CA 45
2.6.5创建HTTPS服务 45
2.7 WebSocket 48
2.7.1保持通话 48
2.7.2为什么要有WebSocket 49
2.7.3 WebSocket与Node 50
2.8 Stream 50
2.8.1 Stream的种类 50
2.8.2 ReadLine 53
2.8.3自定义Stream 54
2.9 Events 55
2.9.1事件和监听器 55
2.9.2处理error事件 56
2.9.3继承Events模块 57
2.10多进程服务 58
2.10.1 child_process模块 58
2.10.2 spawn 58
2.10.3 fork 59
2.10.4 exec和execFile 60
2.10.5各方法之间的比较 62
2.10.6进程间通信 64
2.10.7 Cluster 65
2.11 Process对象 66
2.11.1环境变量 67
2.11.2方法和事件 67
2.11.3一个例子:修改所在的时区 68
2.12 Timer 70
2.12.1常用API 70
2.12.2定时器中的this 71
2.13小结 72
2.14引用资源 72
第3章用ES6来书写Node 73
3.1新时代的EMCAScript 73
3.1.1 JavaScript的缺陷 73
3.1.2 Node对新标准的支持 74
3.1.3使用nvm管理Node版本 75
3.2块级作用域 75
3.2.1 ES5中的作用域 75
3.2.2 let关键字 77
3.2.3 const关键字 78
3.3数组 78
3.3.1 find()和findIndex() 79
3.3.2 from()方法 79
3.3.3 fill()方法 81
3.3.4数组的遍历 81
3.3.5 TypedArray 82
3.4函数 82
3.4.1参数的默认值 82
3.4.2 Spread运算符 83
3.4.3箭头函数 83
3.4.4箭头函数的陷阱 86
3.5 Set和Map 87
3.5.1 Set和WeakSet 87
3.5.2 Map和WeakMap 88
3.6 Iterator 89
3.6.1 Java中的Iterator 89
3.6.2 ES6中的Iterator 89
3.6.3 Iterator的遍历 90
3.7对象 91
3.7.1新的方法 91
3.7.2对象的遍历 92
3.8类 93
3.8.1属性和构造函数 94
3.8.2类方法 94
3.8.3 __proto 95
3.8.4静态方法 96
3.9类的继承 96
3.9.1 ES5中的继承 96
3.9.2 ES6中的继承 98
3.9.3 Node中的类继承 100
3.10 ES6的模块化标准 101
3.11使用babel来转换代码 102
3.12小结 106
3.13引用资源 106
第4章 书写异步代码 107
4.1异步操作的返回值 108
4.2组织回调方法 108
4.2.1回调与CPS 108
4.2.2使用 async模块简化回调 110
4.3使用Promise 112
4.3.1 Promise的历史 112
4.3.2 Promise是什么 113
4.3.3 ES2015中的Promise 114
4.3.4 Promise的常用API 116
4.3.5使用Promise组织异步代码 119
4.3.6第三方模块的Promise 120
4.4 Generator,一种过渡方案 122
4.4.1 Generator的使用 122
4.4.2 Generator函数的执行 123
4.4.3 Generator中的错误处理 126
4.4.4用Generator组织异步方法 127
4.4.5 Generator的自动执行 128
4.5回调的终点——async/await 131
4.5.1 async函数的概念 131
4.5.2 await关键字 133
4.5.3在循环中使用async方法 135
4.5.4 async和await小结 136
4.5.5 async函数的缺点 137
4.6总结 138
4.7引用资源 139
第5章 使用Koa2构建Web站点 140
5.1 Node Web框架的发展历程 140
5.1.1 Connect 140
5.1.2 Express 141
5.1.3 Koa 141
5.2内容规划 142
5.2.1需求分析 142
5.2.2技术选型 142
5.3 Koa入门 143
5.3.1 Koal.x与Koa2 143
5.3.2 context对象 144
5.4 middleware 148
5.4.1中间件的概念 148
5.4.2 next方法 150
5.4.3中间件的串行调用 151
5.4.4一个例子——如何实现超时响应 152
5.5常用服务的实现 154
5.5.1静态文件服务 154
5.5.2路由服务 155
5.5.3数据存储 156
5.5.4文件上传 160
5.5.5页面渲染 163
5.6构建健壮的Web应用 165
5.6.1上传文件验证 166
5.6.2使用Cookie进行身份验证 167
5.6.3使用Session记录会话状态 170
5.7使用Redis进行持久化 173
5.7.1 Node和Redis的交互 173
5.7.2 CURD操作 174
5.7.3使用Redis持久化session 176
5.7.4 Redis在Node中的应用 179
5.8 Koa源码剖析 180
5.8.1 Koa的启动过程 180
5.8.2中间件的加载 181
5.8.3 listen()方法 184
5.8.4 next()与return next() 185
5.8.5关于Can’t set headers after they are sent 186
5.8.6 Context对象的实现 187
5.8.7 Koa的优缺点 189
5.9网站部署 190
5.9.1本地部署 190
5.9.2部署在云服务主机上 191
5.9.3通过GitHub pages来部署 193
5.10总结 194
5.11引用资源 194
第6章 爬虫系统的开发 195
6.1爬虫技术概述 196
6.2技术栈简介 196
6.2.1 request.js 196
6.2.2 cheerio 197
6.2.3消息队列 199
6.3构建脚手架 199
6.3.1选择目标网站 199
6.3.2分析URL结构 200
6.3.3构建HTTP请求 200
6.3.4解析页面元素 201
6.4进行批量爬取 203
6.4.1使用递归和定时器 203
6.4.2多进程并行 205
6.5爬虫架构的改进 206
6.5.1异步流程控制 206
6.5.2回到最初的目标 206
6.5.3多进程模型的缺陷 208
6.6进程架构的改进 208
6.6.1生产/消费模型 208
6.6.2生产者的实现 209
6.6.3消费者的实现 211
6.7反爬虫处理 213
6.7.1爬虫的危害 213
6.7.2识别一个爬虫 213
6.7.3针对爬虫的处理 214
6.8总结 216
6.9引用资源 216
第7章 测试与调试 217
7.1单元测试 218
7.1.1使用Assert模块 218
7.1.2 Jasmine 219
7.1.3 Ava.js——面向未来 224
7.2测试现有代码 227
7.3更高维度的测试 228
7.3.1基准测试 228
7.3.2集成测试 229
7.3.3持续集成 229
7.4调试Node应用 231
7.4.1语言和IDE 232
7.4.2使用node-inspector 233
7.4.3使用v8-inspector 234
7.4.4使用IDE进行调试 236
7.4.5 cpu profiling 237
7.5总结 239
7.6引用资源 239
第8章Node中的错误处理 240
8.1 Error模块 241
8.2错误处理的几种方式 241
8.3被抛弃的Domain 243
8.3.1 Domain模块简介 243
8.3.2 Domain原理 247
8.3.3 Domain中间件 249
8.3.4 Domain的缺陷 249
8.4 ES6中的错误处理 250
8.4.1 Promise 250
8.4.2 Generator 250
8.4.3 async函数 251
8.5 Web服务中的错误处理 251
8.5.1针对每个请求的错误处理 251
8.5.2 Express中的错误处理 252
8.5.3 Koa中的错误处理 252
8.6防御式编程与Let it crash 253
8.7总结 256
8.8引用资源 256
附录A进程、线程、协程 257
A.1从操作系统说起 257
A.2 Node中的协程 258
附录B Lua语言简介 259
B.1 Lua中的数据类型 259
B.2定义一个函数 260
B.3 Lua中的协程 261
附录C从零开发一个Node Web框架 263
C.1框架的雏形 263
C.2框架的完善 264
C.3总结 268
附录D MongoDB和Redis简介 269
D.l NoSQL 269
D.2 MongoDB简介 269
D.3 Redis简介 271
附录E使用Docker来实现虚拟化 274
E.1 Docker的一些常用命令 274
E.2 Redis服务 275
附录F npm与包管理 277
F.1 package .json常用字段 277
F.2依赖版本的管理 278
- 《钒产业技术及应用》高峰,彭清静,华骏主编 2019
- 《现代水泥技术发展与应用论文集》天津水泥工业设计研究院有限公司编 2019
- 《异质性条件下技术创新最优市场结构研究 以中国高技术产业为例》千慧雄 2019
- 《HTML5从入门到精通 第3版》(中国)明日科技 2019
- 《Prometheus技术秘笈》百里燊 2019
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《中央财政支持提升专业服务产业发展能力项目水利工程专业课程建设成果 设施农业工程技术》赵英编 2018
- 《药剂学实验操作技术》刘芳,高森主编 2019
- 《林下养蜂技术》罗文华,黄勇,刘佳霖主编 2017
- 《脱硝运行技术1000问》朱国宇编 2019
- 《传染性法氏囊病毒的反向遗传操作研究》刘锴著 2013
- 《美国公民教育模式研究》孔锴著 2013
- 《数字未来 媒介融合与报业发展》郜书锴著 2013
- 《你一定要懂的人际秘密 实战篇》赵文锴著 2013
- 《十年三品百年味》杜宗锴著 2009
- 《古典文学名篇鉴赏》刘学锴著 2008
- 《艺术技巧与魅力》赵增锴著 1987
- 《蔡廷锴自传》蔡廷锴著 1982
- 《合同法》李旭东,李锴主编 2011
- 《成就辉煌的事业纪实》韩锴著 2009
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019