《图灵程序设计丛书:Node与Express开发》系统讲解了使用Express开发动态Web应用的流程和步骤。作者不仅讲授了开发公共站点及REST API的基础知识,同时还讲解了构建单页、多页及混合Web应用的规划方式及实践。具体而言,第1~5章介绍Node 和Express,搭建一个示例网站的骨架,讨论测试和QA。第6~12章介绍Node中更重要的结构,讲解模板,介绍cookies、会话和表单处理 器,探讨中间件以及从服务器发送电子邮件。第13~15章讨论持久化、URL路由、API的编写、流行的MVC范式。第18~22章讨论安全、社交媒体集 成以及网站的调试、启用和维护。
《图灵程序设计丛书:Node与Express开发》适合所有前端和后端开发人员阅读。
《图灵程序设计丛书:Node与Express开发》涵盖Express 4.0,系统地讲解了利用Express(Node/JavaScript开发栈中的重要组件)开发动态Web应用的流程和步骤。作者Ethan Brown通过开发一个示例应用讲授了开发公共网站和REST API的基础知识。此外还介绍了设计与实现Web架构的实践,帮你用Express构建单页、多页以及混合Web应用。
Express在根本没有框架和有一个健壮的框架之间找到了平衡,让你自由选择架构。通过《图灵程序设计丛书:Node与Express开发》,熟悉JavaScript的前端和后端工程师会发现一种新的Web开发视角。
通过阅读《图灵程序设计丛书:Node与Express开发》,你将能够:
为渲染动态数据创建网页模板系统
探究请求对象和响应对象、中间件及URL路由
模拟用于测试和开发的生产环境
实现文档数据库的持久化,特别是针对MongoDB
让其他程序可以通过REST API访问你的资源
用HTTPS、认证和授权开发安全的Web应用
集成社交媒体、地理位置服务和其他第三方服务
实现应用的启动和维护计划
学习重要的调试技能
很明显,本书是给想要用JavaScript、Node 和Express 创建Web 应用程序(传统网站、REST API,或者介于两者之间的任何东西)的程序员准备的。Node 开发令人兴奋的一面是它已经吸引了全新的程序员受众。JavaScript 的可用性和灵活性吸引了来自世界各地的自学成才的程序员。在计算机科学的历史中,编程还从没有如此容易过。学习编程的在线资源的品质和数量(以及遇到困难时获取的帮助)真的令人惊讶和鼓舞人心。所以对于那些新(可能是自学)的程序员,我表示欢迎。
当然,还有像我这样已经做过一段时间编程的程序员。与同时代的很多程序员一样,我也是从汇编和BASIC 开始的,然后经历了Pascal、C++、Perl、Java、PHP、Ruby、C、C#和JavaScript。上大学时,我接触过更加小众的语言,比如ML、LISP 和PROLOG。这些语言很多都接近我的理想选择,但没有一个像JavaScrip 这样让我觉得前景如此光明。所以这本书也是给像我这样的程序员写的,他们经验丰富,可能对特定技术的认识更富哲理。
你不一定要有Node 方面的经验,但应该有一些JavaScript 经验。如果你是有经验的程序员,推荐你看看Douglas Crockford 的JavaScript: The Good Parts(O’Reilly,http://book.douban.com/subject/2994925/)。本书中的例子可以在Node 支持的任何系统(包括Windows、OS X 和Linux)上使用。这些示例主要面向命令行(终端)用户,所以你应该熟悉你所使用的系统的终端。
最重要的是,本书是为那些跃跃欲试的程序员准备的。他们对互联网的未来感到兴奋,并且想参与其中。他们对学新东西、新技术和Web 开发的新方式感到兴奋。亲爱的读者,如果你没有兴奋感,我希望你读完本书时能有这种感觉。
Ethan Brown,美国俄勒冈州Pop Art公司的高级软件工程师,负责网站及Web服务架构的设计与实现。拥有20多年编程经验,从事过嵌入式开发和Web开发,他相信JavaScript技术栈是未来的Web平台。
序XIV
前言XV
第1章初识Express
1.1JavaScript革命
1.2初识Express
1.3Express简史
1.4升级到Express4.0
1.5Node:一种新型Web服务器
1.6Node的生态系统
1.7授权
第2章从Node开始
2.1获取Node
2.2使用终端
2.3编辑器
2.4npm
2.5用Node实现的简单Web服务器
2.5.1HelloWorld
2.5.2事件驱动编程
2.5.3路由
2.5.4静态资源服务
2.6走向Express
第3章省时省力的Express
3.1脚手架
3.2草地鹨旅行社网站
3.3初始步骤
3.3.1视图和布局
3.3.2视图和静态文件
3.3.3视图中的动态内容
3.4小结
第4章工欲善其事,必先利其器
4.1最佳实践
4.2版本控制
4.3针对本书如何使用Git
4.3.1如果你要自己动手
4.3.2如果你要使用官方存储库
4.4npm包
4.5项目元数据
4.6Node模块
第5章质量保证
5.1QA:值得吗
5.2逻辑与展示
5.3测试的类型
5.4QA技术概览
5.5运行你的服务器
5.6页面测试
5.7跨页测试
5.8逻辑测试
5.9去毛
5.10链接检查
5.11用Grunt实现自动化
5.12持续集成
第6章请求和响应对象
6.1URL的组成部分
6.2HTTP请求方法
6.3请求报头
6.4响应报头
6.5互联网媒体类型
6.6请求体
6.7参数
6.8请求对象
6.9响应对象
6.10获取更多信息
6.11小结
6.11.1内容渲染
6.11.2处理表单
6.11.3提供一个API
第7章Handlebars模板引擎
7.1唯一一条绝对规则
7.2选择模板引擎
7.3Jade:不走寻常路
7.4Handlebars基础
7.4.1注释
7.4.2块级表达式
7.4.3服务器端模板
7.4.4视图和布局
7.4.5在Express中使用(或不使用)布局
7.4.6局部文件
7.4.7段落
7.4.8完善你的模板
7.4.9客户端Handlebars
7.5小结
第8章表单处理
8.1向服务器发送客户端数据
8.2HTML表单
8.3编码
8.4处理表单的不同方式
8.5Express表单处理
8.6处理AJAX表单
8.7文件上传
8.8jQuery文件上传
第9章Cookie与会话
9.1凭证的外化
9.2Express中的Cookie
9.3检查Cookie
9.4会话
9.4.1内存存储
9.4.2使用会话
9.5用会话实现即显消息
9.6会话的用途
第10章中间件
10.1常用中间件
10.2第三方中间件
第11章发送邮件
11.1SMTP、MSA和MTA
11.2接收邮件
11.3邮件头
11.4邮件格式
11.5HTML邮件
11.6Nodemailer
11.6.1发送邮件
11.6.2将邮件发送给多个接收者
11.7发送批量邮件的更佳选择
11.8发送HTML邮件
11.8.1HTML邮件中的图片
11.8.2用视图发送HTML邮件
11.8.3封装邮件功能
11.9将邮件作为网站监测工具
第12章与生产相关的问题
12.1执行环境
12.2环境特定配置
12.3扩展你的网站
12.3.1用应用集群扩展
12.3.2处理未捕获的异常
12.3.3用多台服务器扩展
12.4网站监控
12.4.1第三方正常运行监控
12.4.2应用程序故障
12.5压力测试
第13章持久化
13.1文件系统持久化
13.2云持久化
13.3数据库持久化
13.3.1关于性能
13.3.2设置MongoDB
13.3.3Mongoose
13.3.4使用Mongoose连接数据库
13.3.5创建模式和模型
13.3.6添加初始数据
13.3.7获取数据
13.3.8添加数据
13.3.9用MongoDB存储会话数据
第14章路由
14.1路由和SEO
14.2子域名
14.3路由处理器是中间件
14.4路由路径和正则表达式
14.5路由参数
14.6组织路由
14.7在模块中声明路由
14.8按逻辑对处理器分组
14.9自动化渲染视图
14.10其他的路由组织方式
第15章RESTAPI和JSON
15.1JSON和XML
15.2我们的API
15.3API错误报告
15.4跨域资源共享
15.5我们的数据存储
15.6我们的测试
15.7用Express提供API
15.8使用REST插件
15.9使用子域名
第16章静态内容
16.1性能方面的考虑
16.2面向未来的网站
16.2.1静态映射
16.2.2视图中的静态资源
16.2.3CSS中的静态资源
16.3服务器端JavaScript中的静态资源
16.4客户端JavaScript中的静态资源
16.5提供静态资源
16.6修改静态内容
16.7打包和缩小
16.8关于第三方库
16.9QA
16.10小结
第17章在Express中实现MVC
17.1模型
17.2视图模型
17.3控制器
17.4小结
第18章安全
18.1HTTPS
18.1.1生成自己的证书
18.1.2使用免费的证书颁发机构
18.1.3购买证书
18.1.4对你的Express应用启用HTTPS
18.1.5关于端口的说明
18.1.6HTTPS和代理
18.2跨站请求伪造
18.3认证
18.3.1认证与授权
18.3.2密码的问题
18.3.3第三方认证
18.3.4把用户存在数据库中
18.3.5认证与注册和用户体验
18.3.6Passport
18.3.7基于角色的授权
18.3.8添加更多认证提供者
18.4小结
第19章集成第三方API
19.1社交媒体
19.1.1社交媒体插件和站点性能
19.1.2搜索推文
19.1.3渲染推文
19.2地理编码
19.2.1用谷歌的地理编码
19.2.2对你的数据做地理编码
19.2.3显示地图
19.2.4提升客户端性能
19.3天气数据
19.4小结
第20章调试
20.1调试的首要原则
20.2利用好REPL和控制台
20.3利用Node内置的调试器
20.4Node探查器
20.5调试异步函数
20.6调试Express
第21章正式启用
21.1域名注册和托管服务
21.1.1域名系统
21.1.2安全
21.1.3顶级域名
21.1.4子域名
21.1.5域名服务器
21.1.6托管
21.1.7部署
21.2小结
第22章维护
22.1维护的原则
22.1.1有长远规划
22.1.2使用源码控制系统
22.1.3使用问题追踪系统
22.1.4良好的卫生习惯
22.1.5不要拖延
22.1.6做常规的QA检查
22.1.7监测分析
22.1.8性能优化
22.1.9潜在用户追踪优先
22.1.10防止出现"不可见的"错误
22.2代码重用及重构
22.2.1私有npm库
22.2.2中间件
22.3小结
第23章其他资源
23.1在线文档
23.2期刊
23.3StackOverflow
23.4为Express做贡献
23.5小结
关于封面
关于作者