当Web 开发技术日渐成熟,各种*佳实践和模式逐渐被总结和沉淀下来,“技术栈”这个术语开始出现。技术栈通常指的是开发一个完整的Web 应用程序时所需的特定工具、库、框架的组合。印象中,*个*热门的Web 开发技术栈是LAMP(Linux、Apache、MySQL 和PHP),随着前端在Web 开发领域中所占的比例越来越大,以及Node.js 的流行,MEAN 技术栈(MongoDB、Express、AngularJS 和Node.js)逐渐异军突起,影响力越来越大。由于MEAN 技术栈的前后端全都使用了JavaScript 语言,这也使得“全栈工程师”这个称呼开始流行起来。
《MERN全栈开发 使用Mongo Express React和Node》所讲述的MERN 技术栈,和MEAN 只有一“字母”之差。MERN将MEAN 中的AngularJS 更换成这两年明显更受欢迎、使用更加广泛的React,使得自己相比MEAN 更接地气,更适合有志成为“全栈工程师”的Web 开发人员阅读。
在阅读本书以及完成《MERN全栈开发 使用Mongo Express React和Node》中所包含练习的过程中,你很自然地就会学习到如何寻找高质量的GitHub 开源项目,并将它们应用到你的应用程序中。
使用React构建现代Web应用,需要组合使用一个完整的技术栈:MongoDB
(NoSQL数据库)、Express(Web应用服务器框架)及其运行语言Node(服务器端的
JavaScript),从而形成对React技术的完美补充。本书还涵盖了构建完整Web应用所
用到的诸多工具:React Router、React-Bootstrap、Redux、babel以及webpack。
《MERN全栈开发 使用Mongo Express React和Node》旨在帮助读者掌握构建
完备Web应用的技能,书中的大部分内容都会专注于React技术的使用。
流行的MEAN(MongoDB、Express、AngularJS、Node)技术栈引入了单页面应
用(SPA)和前端的MVC(模型-视图-控制器)模式,*了全新、高效的开发模式。不
过它也有缺点,例如缺乏能够良好支持SEO的服务器端渲染能力,以及作为框架而
言过于严格的规范性。
Facebook创立的React技术并不是AngularJS直接的竞争对手,它并不是一个完
整的MVC框架,而是一个用于创建用户界面(某种意义上来说,就是视图部分)的
JavaScript库。然而,使用React替代AngularJS来创建Web应用也是完全可行的,这
也正是MERN技术栈存在的价值。
主要内容
● 详细了解React及其编程风格,了解如何充分发挥它的能力
● 了解MongoDB、Express和Node的基本功能,这些功能足以让你完成Web应用
的搭建
● 学习补充React功能的相关工具,包括React-Bootstrap和React Router
● 使用必要的工具搭建基于JavaScript的单页面应用
● 将所有组件连接在一起,构建完整的Web应用
目 录
第1章 引言 1
1.1 MERN是什么 1
1.2 本书的目标读者 3
1.3 本书组织结构 3
1.4 格式约定 5
1.5 读者须知 7
1.6 MERN的组件 8
1.6.1 React 8
1.6.2 Node.js 11
1.6.3 Express 14
1.6.4 MongoDB 15
1.6.5 工具与库 17
1.7 为何使用MERN
技术栈 19
1.7.1 清一色的JavaScript
语言 19
1.7.2 清一色的JSON数据格式 20
1.7.3 Node.js的性能 20
1.7.4 npm生态系统 21
1.7.5 同构性 21
1.7.6 它不是一个框架 22
1.8 小结 22
第2章 Hello World 23
2.1 脱离服务器的
Hello World 23
2.2 服务器搭建 27
2.2.1 nvm 27
2.2.2 Node.js 28
2.2.3 项目 29
2.2.4 npm 30
2.2.5 Express 32
2.3 构建阶段的JSX
编译 34
2.3.1 分离脚本文件 35
2.3.2 转换 36
2.3.3 自动化 38
2.3.4 React库 39
2.4 ES2015 39
2.5 小结 43
2.6 习题答案 43
2.6.1 习题:JSX 43
2.6.2 习题:npm 44
2.6.3 习题:Express 44
2.6.4 习题:babel 45
2.6.5 习题:ES2015 45
第3章 React组件 47
3.1 Issue Tracker
(问题追踪) 47
3.2 React类 49
3.3 组件组装 51
3.4 传递数据 53
3.4.1 使用属性 53
3.4.2 属性校验 56
3.4.3 使用Children 57
3.5 动态组装 59
3.6 小结 64
3.7 习题答案 64
3.7.1 习题:React类 64
3.7.2 习题:传递数据 64
3.7.3 习题:动态组装 65
第4章 React状态 67
4.1 设置状态 67
4.2 异步状态初始化 71
4.3 事件处理 73
4.4 从子组件到父组件的
通信 74
4.5 无状态组件 77
4.6 设计组件 79
4.6.1 状态与props 79
4.6.2 组件层次结构 80
4.6.3 通信 80
4.6.4 无状态组件 80
4.7 小结 81
4.8 习题答案 81
4.8.1 习题:设置状态 81
4.8.2 习题:从子组件到
父组件的通信 82
第5章 Express REST APIs 83
5.1 REST 83
5.1.1 基于资源 84
5.1.2 使用HTTP Methods
标识操作 84
5.1.3 JSON 87
5.2 Express 87
5.2.1 路由 87
5.2.2 处理程序函数 89
5.2.3 中间件 91
5.3 List API 92
5.3.1 服务器自动重启 94
5.3.2 测试 95
5.4 Create API 97
5.5 使用List API 100
5.6 使用Create API 102
5.7 错误处理 104
5.8 小结 108
5.9 习题答案 109
5.9.1 习题:List API 109
5.9.2 习题:Create API 110
5.9.3 习题:使用
List API 111
5.9.4 习题:使用
Create API 111
5.9.5 习题:错误处理 111
第6章 使用MongoDB 113
6.1 MongoDB基础 113
6.1.1 文档 113
6.1.2 集合 114
6.1.3 查询语言 115
6.1.4 安装 116
6.1.5 mongo shell 117
6.1.6 shell脚本 121
6.2 架构初始化 122
6.3 MongoDB Node.js
驱动程序 123
6.3.1 回调 126
6.3.2 Promises 127
6.3.3 Generator和co
模块 128
6.3.4 async模块 129
6.4 从MongoDB读取
数据 131
6.5 向MongoDB写入
数据 134
6.6 小结 136
6.7 习题答案 136
6.7.1 习题:mongo
shell 136
6.7.2 习题:架构
初始化 137
6.7.3 习题:从MongoDB
读取数据 137
6.7.4 习题:向MongoDB
写入数据 138