具体描述
本书系统讲解了使用Express开发动态Web应用的流程和步骤。作者不仅讲授了开发公共站点及REST API的基础知识,同时还讲解了构建单页、多页及混合Web应用的规划方式及最佳实践。具体而言,第1~5章介绍Node 和Express,搭建一个示例网站的骨架,讨论测试和QA。第6~12章介绍Node中更重要的结构,讲解模板,介绍cookies、会话和表单处理器,探讨中间件以及从服务器发送电子邮件。第13~15章讨论持久化、URL路由、API的编写、流行的MVC范式。第18~22章讨论安全、社交媒体集成以及网站的调试、启用和维护。
本书适合所有前端和后端开发人员阅读。
作者简介
Ethan Brown
美国俄勒冈州Pop Art公司的高级软件工程师,负责网站及Web服务架构的设计与实现。拥有20多年编程经验,从事过嵌入式开发和Web开发,他相信JavaScript技术栈是未来的Web平台。
目录信息
前言 XV
第1章 初识Express 1
1.1 JavaScript革命 1
1.2 初识Express 2
1.3 Express 简史 3
1.4 升级到Express 4.0 4
1.5 Node:一种新型Web 服务器 4
1.6 Node 的生态系统 5
1.7 授权 6
第2章 从Node开始 8
2.1 获取Node 8
2.2 使用终端 9
2.3 编辑器 10
2.4 npm 11
2.5 用Node 实现的简单Web服务器 12
2.5.1 Hello World 12
2.5.2 事件驱动编程 13
2.5.3 路由 13
2.5.4 静态资源服务 14
2.6 走向Express 16
第3章 省时省力的Express 17
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 针对本书如何使用Git 27
4.3.1 如果你要自己动手 28
4.3.2 如果你要使用官方存储库 29
4.4 npm 包 29
4.5 项目元数据 31
4.6 Node 模块 31
第5章 质量保证 33
5.1 QA:值得吗 34
5.2 逻辑与展示 35
5.3 测试的类型 35
5.4 QA 技术概览 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.1 URL 的组成部分 48
6.2 HTTP 请求方法 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 提供一个API 58
第7章 Handlebars 模板引擎 60
7.1 唯一一条绝对规则 61
7.2 选择模板引擎 61
7.3 Jade:不走寻常路 62
7.4 Handlebars 基础 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 客户端Handlebars 73
7.5 小结 75
第8章 表单处理 76
8.1 向服务器发送客户端数据 76
8.2 HTML 表单 76
8.3 编码 77
8.4 处理表单的不同方式 78
8.5 Express 表单处理 79
8.6 处理AJAX 表单 81
8.7 文件上传 83
8.8 jQuery 文件上传 85
第9章 Cookie 与会话 88
9.1 凭证的外化 89
9.2 Express 中的Cookie 90
9.3 检查Cookie 91
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.1 SMTP、MSA 和MTA 103
11.2 接收邮件 104
11.3 邮件头 104
11.4 邮件格式 104
11.5 HTML 邮件 105
11.6 Nodemailer 105
11.6.1 发送邮件 106
11.6.2 将邮件发送给多个接收者 107
11.7 发送批量邮件的更佳选择 108
11.8 发送HTML 邮件 108
11.8.1 HTML 邮件中的图片 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 设置MongoDB 127
13.3.3 Mongoose 128
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 路由和SEO 139
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 和JSON 147
15.1 JSON和XML 148
15.2 我们的API 148
15.3 API 错误报告 149
15.4 跨域资源共享 150
15.5 我们的数据存储 150
15.6 我们的测试 151
15.7 用Express 提供API 152
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.3 CSS 中的静态资源 161
16.3 服务器端JavaScript中的静态资源 162
16.4 客户端JavaScript中的静态资源 163
16.5 提供静态资源 164
16.6 修改静态内容 165
16.7 打包和缩小 165
16.8 关于第三方库 170
16.9 QA 170
16.10 小结 171
第17章 在Express 中实现MVC 173
17.1 模型 174
17.2 视图模型 175
17.3 控制器 177
17.4 小结 179
第18章 安全 180
18.1 HTTPS 180
18.1.1 生成自己的证书 181
18.1.2 使用免费的证书颁发机构 182
18.1.3 购买证书 182
18.1.4 对你的Express 应用启用HTTPS 184
18.1.5 关于端口的说明 185
18.1.6 HTTPS 和代理 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.6 Passport 190
18.3.7 基于角色的授权 199
18.3.8 添加更多认证提供者 200
18.4 小结 201
第19章 集成第三方API 202
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.4 Node 探查器 220
20.5 调试异步函数 223
20.6 调试Express 224
第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.3 Stack Overflow 248
23.4 为Express做贡献 250
23.5 小结 252
关于封面 253
关于作者 254
· · · · · · (收起)
读后感
进度很快,基本上只讲怎么做不讲原理,而且假设读者有了相当的JS和HTML/CSS基础。 虽然细节的介绍非常不足,但是可以用来观其大略。 个人认为如果作为开拓眼界的node/express学习书可以打四星,但是 1. typo太多,引入了很多没必要的坑; 2. 作者提供的git repo和书籍内容同...
任何一本技术书,只要仔细看,都能或多或少学到一些东西,值回票价,但是好书和坏书的差别在于,阅读学习过程中的流畅程度和喜悦感,这本书明显没有达标。 我猜想,大多数买这本书的人,都是node/express的初学者,希望通过阅读这本书来掌握node/express。 这本书的翻译不错...
任何一本技术书,只要仔细看,都能或多或少学到一些东西,值回票价,但是好书和坏书的差别在于,阅读学习过程中的流畅程度和喜悦感,这本书明显没有达标。 我猜想,大多数买这本书的人,都是node/express的初学者,希望通过阅读这本书来掌握node/express。 这本书的翻译不错...
任何一本技术书,只要仔细看,都能或多或少学到一些东西,值回票价,但是好书和坏书的差别在于,阅读学习过程中的流畅程度和喜悦感,这本书明显没有达标。 我猜想,大多数买这本书的人,都是node/express的初学者,希望通过阅读这本书来掌握node/express。 这本书的翻译不错...
用户评价
这本书的开篇章节,着实让我这个自诩为“老鸟”的开发者,也感到了一丝久违的心跳加速。作者并非采取那种枯燥的、逐条列举语法的传统教科书式开场,而是用一个极富场景感的案例,一下子将我们拽入了真实的项目构建流程之中。我记得当时读到介绍如何搭建一个高性能API网关的段落时,简直是拍案叫绝。他没有急于展示复杂的代码块,而是先深入剖析了当今微服务架构中,Node.js面临的性能瓶颈与优化方向,那种洞察力,绝非停留在表面API调用的水平。更让我佩服的是,作者对异步编程模型的阐述,简直是教科书级别的清晰。他没有止步于`async/await`的语法糖,而是回溯到了Event Loop的底层机制,用生动的比喻,将那些过去让我困惑的“回调地狱”和“Promise链式调用”的深层逻辑,彻底梳理得井井有条。这种从宏观到微观,再回归实践的叙事手法,极大地提升了阅读的沉浸感,让人感觉自己不是在被动地接收知识,而是在与一位经验丰富的架构师并肩作战,共同解决实际问题。
最后的总结部分,这本书给我的感觉是它搭建了一个坚实的“知识脚手架”,它不仅教会了我“如何做”(How),更重要的,它阐明了“为什么这么做”(Why)。我特别欣赏作者在每一章末尾设置的“架构师视角”小节。这个小节的内容往往不是新的代码,而是对本章技术选型背后权衡的深入讨论——比如,为什么在这个场景下选择中间件A而不是中间件B,或者,为什么从同步I/O切换到异步模型会对整体吞吐量产生指数级的提升。这些高层次的思考,有效地拔高了读者的认知水平,使我们能够跳出具体的代码实现,站在系统设计的高度去审视问题。这让我感觉自己得到的不仅仅是一堆即插即用的技术片段,而是一套完整的、可迁移的、面向未来的开发思维模式。读完这本书,我不再只是一个会写Node代码的工程师,而是一个能够清晰阐述技术决策背后的逻辑的开发者。这份思维上的升华,才是这本书带给我最宝贵的财富。
这本书的封面设计简直是一场视觉的盛宴,大胆的用色和现代感的排版,一下子就把我从那些沉闷的技术书籍堆里给吸引住了。我承认,我是一个不折不扣的“颜值党”,技术内容再硬核,如果包装不够吸引人,我可能根本没有打开的欲望。而《Node与Express开发》这本书,从我拿到它的一刻起,就让我感受到了那种扑面而来的专业和活力。特别是封面上那些抽象的线条和节点链接的图形,虽然只是静态的图像,却隐隐约约传达出一种流畅、高效的数据流动的气息,仿佛在告诉我,一旦翻开它,我将进入一个由代码和逻辑编织的精妙世界。我尤其欣赏作者在设计上的克制,没有堆砌过多的装饰元素,而是用最简洁的几何图形勾勒出主题,这本身就是一种高水平的表达。可以说,光是这份对细节的打磨,就让我对书的内容产生了极高的期待值,它不像那种为了应付出版而匆忙问世的教材,倒像是作者倾注了心血的艺术品。初次接触这本书时,那种想要立刻拥抱它,一探究竟的冲动是难以抑制的,这份视觉上的愉悦感,在众多冰冷的技术书籍中,无疑是一股清新的暖流。
这本书的排版和字体选择,也体现出对长时间阅读的深刻理解。作为一个重度读者,我深知一本技术书如果字体过小、行距过密,阅读体验会急剧下降,继而影响知识的吸收效率。这本书的内页设计,采用了非常舒适的纸张和适中的字号,行间距拉得恰到好处,使得代码块和自然语言之间的切换非常流畅。更值得称赞的是,代码示例的格式化处理。每一个代码片段都经过了精心缩进和高亮处理,不同类型的关键字(如变量、函数、保留字)都有着明确的颜色区分,即便是在光线不佳的环境下阅读,也丝毫不会感到吃力。我常常发现自己能够一口气阅读好几页而不感到眼睛疲劳,这在以往阅读其他技术书籍时是很少有的体验。这种对阅读体验的精细打磨,间接帮助我更快地理解了那些原本可能因为阅读障碍而感到晦涩的复杂概念。这本书真正做到了“服务于读者”,而不是让读者去适应它的“书面形式”。
在深入阅读的过程中,我发现这本书对于那些“非核心”技术的覆盖广度,同样令人印象深刻。很多同类书籍往往只关注于框架本身的功能实现,对于部署、测试和安全性这些“软件工程的基石”却一笔带过,让人在项目完成后,依然感到底气不足。然而,这本书却花了大量的篇幅,详尽地探讨了如何将Express应用容器化,并结合Docker Compose进行本地开发环境的快速模拟,这对于现代敏捷开发流程来说,简直是太及时雨了。特别是关于安全性的章节,作者深入剖析了CSRF、XSS以及SQL注入(尽管是针对NoSQL的上下文,但原理相通)的攻击向量,并给出了基于成熟中间件的防御策略,措辞严谨,富有实操性。阅读这些部分时,我仿佛在参加一场高强度的安全攻防演练,每一个安全漏洞的剖析都伴随着清晰的补救代码示例。这种对“健壮性”的执着追求,让这本书的价值远远超越了一个单纯的“技术手册”,更像是一部全面的Web应用开发实践指南。
还挺好的,比较全面。但是废话太多了,也没有什么深入,这个比较遗憾。
能系统的了解一遍node和express,对我的论文帮助还是挺大的
谢谢你的赠书,书读完框架也过时了,冲情怀给满分,书内容两分
入门express很不错的书
谢谢你的赠书,书读完框架也过时了,冲情怀给满分,书内容两分