内容简介
本书系统讲解了使用Express开发动态Web应用的流程和步骤。作者不仅讲授了开发公共站点及REST API的基础知识,同时还讲解了构建单页、多页及混合Web应用的规划方式及最佳实践。具体而言,第1~5章介绍Node 和Express,搭建一个示例网站的骨架,讨论测试和QA。第6~12章介绍Node中更重要的结构,讲解模板,介绍cookies、会话和表单处理器,探讨中间件以及从服务器发送电子邮件。第13~15章讨论持久化、URL路由、API的编写、流行的MVC范式。第18~22章讨论安全、社交媒体集成以及网站的调试、启用和维护。
目录
- 序XIV
- 前言XV
- 第1章初识Express1
- 1.1JavaScript革命1
- 1.2初识Express2
- 1.3Express 简史3
- 1.4升级到Express 4.04
- 1.5Node:一种新型Web 服务器4
- 1.6Node 的生态系统5
- 1.7授权6
- 第2章从Node开始8
- 2.1获取Node8
- 2.2使用终端9
- 2.3编辑器10
- 2.4npm11
- 2.5用Node 实现的简单Web服务器12
- 2.5.1Hello World12
- 2.5.2事件驱动编程13
- 2.5.3路由13
- 2.5.4静态资源服务14
- 2.6走向Express16
- 第3章省时省力的Express17
- 3.1脚手架17
- 3.2草地鹨旅行社网站18
- 3.3初始步骤18
- 3.3.1视图和布局21
- 3.3.2视图和静态文件24
- 3.3.3视图中的动态内容24
- 3.4小结25
- 第4章工欲善其事,必先利其器26
- 4.1最佳实践26
- 4.2版本控制27
- 4.3针对本书如何使用Git27
- 4.3.1如果你要自己动手28
- 4.3.2如果你要使用官方存储库29
- 4.4npm 包29
- 4.5项目元数据31
- 4.6Node 模块31
- 第5章质量保证33
- 5.1QA:值得吗34
- 5.2逻辑与展示35
- 5.3测试的类型35
- 5.4QA 技术概览35
- 5.5运行你的服务器36
- 5.6页面测试36
- 5.7跨页测试40
- 5.8逻辑测试43
- 5.9去毛43
- 5.10链接检查44
- 5.11用Grunt 实现自动化44
- 5.12持续集成46
- 第6章请求和响应对象48
- 6.1URL 的组成部分48
- 6.2HTTP 请求方法49
- 6.3请求报头50
- 6.4响应报头50
- 6.5互联网媒体类型51
- 6.6请求体51
- 6.7参数51
- 6.8请求对象51
- 6.9响应对象53
- 6.10获取更多信息55
- 6.11小结56
- 6.11.1内容渲染56
- 6.11.2处理表单57
- 6.11.3提供一个API58
- 第7章Handlebars 模板引擎60
- 7.1唯一一条绝对规则61
- 7.2选择模板引擎61
- 7.3Jade:不走寻常路62
- 7.4Handlebars 基础63
- 7.4.1注释64
- 7.4.2块级表达式64
- 7.4.3服务器端模板66
- 7.4.4视图和布局67
- 7.4.5在Express 中使用(或不使用)布局69
- 7.4.6局部文件69
- 7.4.7段落71
- 7.4.8完善你的模板72
- 7.4.9客户端Handlebars73
- 7.5小结75
- 第8章表单处理76
- 8.1向服务器发送客户端数据76
- 8.2HTML 表单76
- 8.3编码77
- 8.4处理表单的不同方式78
- 8.5Express 表单处理79
- 8.6处理AJAX 表单81
- 8.7文件上传83
- 8.8jQuery 文件上传85
- 第9章Cookie 与会话88
- 9.1凭证的外化89
- 9.2Express 中的Cookie90
- 9.3检查Cookie91
- 9.4会话92
- 9.4.1内存存储92
- 9.4.2使用会话93
- 9.5用会话实现即显消息93
- 9.6会话的用途95
- 第10章中间件96
- 10.1常用中间件100
- 10.2第三方中间件102
- 第11章发送邮件103
- 11.1SMTP、MSA 和MTA103
- 11.2接收邮件104
- 11.3邮件头104
- 11.4邮件格式104
- 11.5HTML 邮件105
- 11.6Nodemailer105
- 11.6.1发送邮件106
- 11.6.2将邮件发送给多个接收者107
- 11.7发送批量邮件的更佳选择108
- 11.8发送HTML 邮件108
- 11.8.1HTML 邮件中的图片108
- 11.8.2用视图发送HTML 邮件109
- 11.8.3封装邮件功能 111
- 11.9将邮件作为网站监测工具112
- 第12章与生产相关的问题113
- 12.1执行环境113
- 12.2环境特定配置114
- 12.3扩展你的网站115
- 12.3.1用应用集群扩展116
- 12.3.2处理未捕获的异常118
- 12.3.3用多台服务器扩展121
- 12.4网站监控122
- 12.4.1第三方正常运行监控122
- 12.4.2应用程序故障122
- 12.5压力测试123
- 第13章持久化124
- 13.1文件系统持久化124
- 13.2云持久化126
- 13.3数据库持久化126
- 13.3.1关于性能127
- 13.3.2设置MongoDB127
- 13.3.3Mongoose128
- 13.3.4使用Mongoose连接数据库128
- 13.3.5创建模式和模型129
- 13.3.6添加初始数据130
- 13.3.7获取数据131
- 13.3.8添加数据133
- 13.3.9用MongoDB存储会话数据134
- 第14章路由137
- 14.1路由和SEO139
- 14.2子域名139
- 14.3路由处理器是中间件140
- 14.4路由路径和正则表达式141
- 14.5路由参数142
- 14.6组织路由143
- 14.7在模块中声明路由143
- 14.8按逻辑对处理器分组144
- 14.9自动化渲染视图145
- 14.10其他的路由组织方式146
- 第15章REST API 和JSON147
- 15.1JSON和XML148
- 15.2我们的API148
- 15.3API 错误报告149
- 15.4跨域资源共享150
- 15.5我们的数据存储150
- 15.6我们的测试151
- 15.7用Express 提供API152
- 15.8使用REST 插件153
- 15.9使用子域名155
- 第16章静态内容157
- 16.1性能方面的考虑158
- 16.2面向未来的网站158
- 16.2.1静态映射159
- 16.2.2视图中的静态资源160
- 16.2.3CSS 中的静态资源161
- 16.3服务器端JavaScript中的静态资源162
- 16.4客户端JavaScript中的静态资源163
- 16.5提供静态资源164
- 16.6修改静态内容165
- 16.7打包和缩小165
- 16.8关于第三方库170
- 16.9QA170
- 16.10小结171
- 第17章在Express 中实现MVC173
- 17.1模型174
- 17.2视图模型175
- 17.3控制器177
- 17.4小结179
- 第18章安全180
- 18.1HTTPS180
- 18.1.1生成自己的证书181
- 18.1.2使用免费的证书颁发机构182
- 18.1.3购买证书182
- 18.1.4对你的Express 应用启用HTTPS184
- 18.1.5关于端口的说明185
- 18.1.6HTTPS 和代理185
- 18.2跨站请求伪造187
- 18.3认证187
- 18.3.1认证与授权188
- 18.3.2密码的问题188
- 18.3.3第三方认证188
- 18.3.4把用户存在数据库中189
- 18.3.5认证与注册和用户体验190
- 18.3.6Passport190
- 18.3.7基于角色的授权199
- 18.3.8添加更多认证提供者200
- 18.4小结201
- 第19章集成第三方API202
- 19.1社交媒体202
- 19.1.1社交媒体插件和站点性能202
- 19.1.2搜索推文203
- 19.1.3渲染推文206
- 19.2地理编码209
- 19.2.1用谷歌的地理编码209
- 19.2.2对你的数据做地理编码210
- 19.2.3显示地图213
- 19.2.4提升客户端性能215
- 19.3天气数据216
- 19.4小结217
- 第20章调试218
- 20.1调试的首要原则218
- 20.2利用好REPL 和控制台219
- 20.3利用Node 内置的调试器220
- 20.4Node 探查器220
- 20.5调试异步函数223
- 20.6调试Express224
- 第21章正式启用226
- 21.1域名注册和托管服务226
- 21.1.1域名系统227
- 21.1.2安全227
- 21.1.3顶级域名228
- 21.1.4子域名229
- 21.1.5域名服务器229
- 21.1.6托管230
- 21.1.7部署233
- 21.2小结236
- 第22章维护237
- 22.1维护的原则237
- 22.1.1有长远规划237
- 22.1.2使用源码控制系统239
- 22.1.3使用问题追踪系统239
- 22.1.4良好的卫生习惯239
- 22.1.5不要拖延239
- 22.1.6做常规的QA检查240
- 22.1.7监测分析240
- 22.1.8性能优化240
- 22.1.9潜在用户追踪优先241
- 22.1.10防止出现“不可见的”错误242
- 22.2代码重用及重构243
- 22.2.1私有npm库243
- 22.2.2中间件244
- 22.3小结246
- 第23章其他资源247
- 23.1在线文档247
- 23.2期刊248
- 23.3Stack Overflow248
- 23.4为Express做贡献250
- 23.5小结252
- 关于封面253
- 关于作者254
有几点我个人不太满意:
1.覆盖面广而不深,提到了很多不必要的技术名称和知识点(mocha/chai/nodemon/grunt)但是没有深入的讲解,让初学者无从下手有必要使用其他工具来搜索深入研究。
2.个人最讨厌的是代码命名不一致第11章之前用的是Product,后来变成了休假。
3.github上的代码不能直接使用,会给出错误,具体的坑可以自己体验。
4.书写完了,还是没有像样的作品你可以发现,通过研究这本书的代码,你所构建的东西其实毫无意义,也不美观。
5.发现了另一个可怕的坑,包.在json中,每章使用的模块版本是不同的您可以比较第11章和第13章中的连接版本号一个是2,另一个是3似乎。外国人写的东西也是漏洞很多,看作者的性格。
其实对没有后端开发基础的同学来说,这本书很不错。其讲解示例使用的express是目前最新的4.x版本。
Cooool,有什么比读动物书还不困更有意思的事情呢!而且介绍了整个web开发的方方面面,超级推荐!