Node.js+Express+MongoDB+Vue.js全栈开发实战

Node.js+Express+MongoDB+Vue.js全栈开发实战
作 者: 柳伟卫
出版社: 清华大学出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  柳伟卫,网名老卫、waylau,在IT公司担任过项目经理、架构师、高级技术顾问等职位,拥有十多年开发经验,具有丰富的软件开发管理及系统架构经验。主导过多个省、国家级大型分布式系统的设计与研发,参与过面向全球的供应链系统服务化改造。在实际工作中积累了大量的分布式系统、微服务架构以及性能调优经验。业余时间创建了 waylau.com 网站,用于分享个人技术心得。喜欢开源,长期活跃于各大开源社区,是 CSDN、 开源中国、阿里云开发者、华为开发者等技术社区专家,已出版《Java核心编程》《轻量级Java EE企业应用开发实战》等十几部专业图书。

内容简介

本书全面介绍Vue.js Node.js全栈开发所使用的新技术,包括MongoDB、Express、Vue.js 3、Node.js、Naive UI、md-editor-v3、Nginx、basic-auth、JavaScript、TypeScript等开源技术栈,知识点涉及数据存储、模块、测试、缓冲区、事件处理、文件处理、HTTP编程、组件、模板、指令、监听器、表达式、事件、表单、HTTP客户端等内容。本书内容丰富,案例新颖,学习难度由浅入深,层层推进,理论联系实际,具有较强的实操性。这些知识点既能满足当前企业级应用的开发需求,又可以**限度地减轻开发者的负担。本书所介绍的知识较为前瞻,辅以大量的案例,令读者知其然并知其所以然。通过本书的学习,可以令读者拓展视野,提升职场竞争能力。 本书适合Vue.js Node.js全栈开发初学者和进阶读者作为自学教程,也适合培训学校作为培训教材,还适合大、中专院校的相关专业作为教学参考书。

图书目录

第1章 Vue.js Node.js全栈开发概述 1

1.1 Vue.js Node.js全栈开发核心技术栈的组成 1

1.1.1 MongoDB 1

1.1.2 Express 2

1.1.3 Vue.js 2

1.1.4 Node.js 2

1.2 Vue.js Node.js全栈开发周边技术栈的组成 2

1.2.1 Naive UI 2

1.2.2 md-editor-v3 3

1.2.3 Nginx 3

1.2.4 basic-auth 3

1.3 Vue.js Node.js全栈开发的优势 3

1.4 开发工具的选择 6

1.5 小结 6

1.6 练习题 6

第2章 Node.js基础 7

2.1 初识Node.js 7

2.1.1 Node.js简介 7

2.1.2 为什么叫Node.js 8

2.2 Node.js的特点 8

2.2.1 异步I/O 8

2.2.2 事件驱动 9

2.2.3 单线程 10

2.2.4 可用性和扩展性 10

2.2.5 跨平台 11

2.3 安装Node.js 11

2.3.1 安装Node.js和npm 11

2.3.2 Node.js与npm的关系 12

2.3.3 安装npm镜像 12

2.4 第一个Node.js应用 12

2.4.1 实例1:创建Node.js应用 12

2.4.2 实例2:运行Node.js应用 12

2.5 小结 13

2.6 练习题 13

第3章 Node.js模块——大型项目管理之道 14

3.1 理解模块化机制 14

3.1.1 理解CommonJS规范 14

3.1.2 理解ES6模块 16

3.1.3 CommonJS和ES6模块的异同点 17

3.1.4 Node.js的模块实现 18

3.2 使用npm管理模块 19

3.2.1 使用npm命令安装模块 19

3.2.2 全局安装与本地安装 20

3.2.3 查看安装信息 20

3.2.4 卸载模块 21

3.2.5 更新模块 21

3.2.6 搜索模块 21

3.2.7 创建模块 21

3.3 Node.js核心模块 21

3.4 小结 22

3.5 练习题 22

第4章 Node.js测试 23

4.1 严格模式和遗留模式 23

4.2 实例3:断言的使用 24

4.3 了解AssertionError 25

4.4 实例4:使用deepStrictEqual 26

4.5 小结 28

4.6 练习题 28

第5章 Node.js缓冲区—高性能IO处理的秘诀 29

5.1 了解Buffer 29

5.1.1 了解TypedArray 29

5.1.2 Buffer类 30

5.2 创建缓冲区 31

5.2.1 初始化缓冲区的API 31

5.2.2 实例5:理解数据的安全性 32

5.2.3 启用零填充 33

5.2.4 实例6:指定字符编码 33

5.3 实例7:切分缓冲区 34

5.4 实例8:连接缓冲区 35

5.5 实例9:比较缓冲区 36

5.6 缓冲区编解码 36

5.6.1 编码器和解码器 36

5.6.2 实例10:缓冲区解码 37

5.6.3 实例11:缓冲区编码 38

5.7 小结 39

5.8 练习题 39

第6章 Node.js事件处理 40

6.1 理解事件和回调 40

6.1.1 事件循环 41

6.1.2 事件驱动 41

6.2 事件发射器 42

6.2.1 实例12:将参数和this传给监听器 42

6.2.2 实例13:异步与同步 43

6.2.3 实例14:仅处理事件一次 43

6.3 事件类型 44

6.3.1 事件类型的定义 44

6.3.2 内置的事件类型 44

6.3.3 实例15:error事件 44

6.4 事件的操作 47

6.4.1 实例16:设置最大监听器 47

6.4.2 实例17:获取已注册的事件的名称 47

6.4.3 实例18:获取监听器数组的副本 48

6.4.4 实例19:将事件监听器添加到监听器数组的开头 48

6.4.5 实例20:移除监听器 49

6.5 小结 50

6.6 练习题 50

第7章 Node.js文件处理 51

7.1 了解fs模块 51

7.1.1 同步与异步操作文件 51

7.1.2 文件描述符 53

7.2 处理文件路径 53

7.2.1 字符串形式的路径 54

7.2.2 Buffer形式的路径 54

7.2.3 URL对象的路径 55

7.3 打开文件 56

7.3.1 文件系统标志 56

7.3.2 实例21:打开文件的例子 57

7.4 读取文件 58

7.4.1 实例22:用fs.read读取文件 58

7.4.2 实例23:用fs.readdir读取文件 59

7.4.3 实例24:用fs.readFile读取文件 60

7.5 写入文件 61

7.5.1 实例25:将Buffer写入文件 61

7.5.2 实例26:将字符串写入文件 62

7.5.3 实例27:将数据写入文件 64

7.6 小结 64

7.7 练习题 65

第8章 Node.js HTTP编程 66

8.1 创建HTTP服务器 66

8.1.1 实例28:用http.Server创建服务器 66

8.1.2 理解http.Server事件的用法 67

8.2 处理HTTP常用操作 69

8.3 请求对象和响应对象 69

8.3.1 理解http.ClientRequest类 69

8.3.2 理解http.ServerResponse类 73

8.4 REST概述 76

8.4.1 REST定义 76

8.4.2 REST设计原则 76

8.5 成熟度模型 77

8.5.1 第0级:使用HTTP作为传输方式 78

8.5.2 第1级:引入了资源的概念 79

8.5.3 第2级:根据语义使用HTTP动词 80

8.5.4 第3级:使用HATEOAS 81

8.6 实例29:构建REST服务的例子 83

8.6.1 新增用户 84

8.6.2 修改用户 85

8.6.3 删除用户 85

8.6.4 响应请求 86

8.6.5 运行应用 87

8.7 小结 90

8.8 练习题 90

第9章 Express基础 91

9.1 安装Express 91

9.1.1 初始化应用目录 91

9.1.2 初始化应用结构 92

9.1.3 在应用中安装Express 92

9.2 实例30:编写Hello World应用 93

9.3 实例31:运行Hello World应用 93

9.4 小结 94

9.5 练习题 94

第10章 Express路由——页面的导航员 95

10.1 路由方法 95

10.2 路由路径 96

10.2.1 实例32:基于字符串的路由路径 96

10.2.2 实例33:基于字符串模式的路由路径 97

10.2.3 实例34:基于正则表达式的路由路径 97

10.3 路由参数 98

10.4 路由处理器 98

10.4.1 实例35:单个回调函数 98

10.4.2 实例36:多个回调函数 98

10.4.3 实例37:一组回调函数 99

10.4.4 实例38:独立函数和函数数组的组合 99

10.5 响应方法 99

10.6 实例39:Express构建REST API 100

10.7 测试Express的REST API 102

10.7.1 测试创建用户API 102

10.7.2 测试删除用户API 102

10.7.3 测试修改用户API 103

10.7.4 测试查询用户API 104

10.8 小结 104

10.9 练习题 104

第11章 Express错误处理器 105

11.1 捕获错误 105

11.2 默认错误处理器 107

11.3 自定义错误处理器 107

11.4 小结 109

11.5 练习题 109

第12章 MongoDB基础 110

12.1 MongoDB简介 110

12.2 安装MongoDB 112

12.3 启动MongoDB服务 112

12.4 连接到MongoDB服务器 113

12.5 小结 114

12.6 练习题 114

第13章 MongoDB常用操作 115

13.1 显示已有的数据库 115

13.2 创建、使用数据库 115

13.3 插入文档 116

13.3.1 实例40:插入单个文档 116

13.3.2 实例41:插入多个文档 116

13.4 查询文档 117

13.4.1 实例42:嵌套文档查询 118

13.4.2 实例43:嵌套字段查询 118

13.4.3 实例44:使用查询运算符 118

13.4.4 实例45:多条件查询 119

13.5 修改文档 119

13.5.1 实例46:修改单个文档 119

13.5.2 实例47:修改多个文档 120

13.5.3 实例48:替换单个文档 120

13.6 删除文档 121

13.6.1 实例49:删除单个文档 121

13.6.2 实例50:删除多个文档 122

13.7 小结 122

13.8 练习题 122

第14章 使用Node.js操作MongoDB 123

14.1 安装mongodb模块 123

14.2 实现访问MongoDB 124

14.3 运行应用 125

14.4 小结 125

14.5 练习题 125

第15章 mongodb模块的综合应用 126

15.1 实例51:建立连接 126

15.2 实例52:插入文档 127

15.3 实例53:查找文档 128

15.4 修改文档 130

15.4.1 实例54:修改单个文档 130

15.4.2 实例55:修改多个文档 134

15.5 删除文档 137

15.5.1 实例56:删除单个文档 137

15.5.2 实例57:删除多个文档 141

15.6 小结 145

15.7 练习题 145

第16章 Vue.js基础 146

16.1 Vue.js产生的背景 146

16.2 Vue.js的下载安装 146

16.2.1 安装Vue CLI 147

16.2.2 安装Vue Devtools 147

16.3 Vue CLI的常用操作 147

16.3.1 获取帮助 147

16.3.2 创建应用 148

16.3.3 创建服务 149

16.3.4 启动应用 149

16.3.5 编译应用 150

16.4 实例58:创建第一个Vue.js应用 150

16.4.1 使用Vue CLI初始化应用 150

16.4.2 运行Vue应用 154

16.4.3 增加对TypeScript的支持 155

16.5 探索Vue.js应用结构 155

16.5.1 整体项目结构 155

16.5.2 项目根目录文件 156

16.5.3 node_modules目录 156

16.5.4 public目录 157

16.5.5 src目录 158

16.6 小结 161

16.7 练习题 161

第17章 Vue.js应用实例 162

17.1 创建应用实例 162

17.1.1 第一个应用实例 162

17.1.2 让应用实例执行方法 162

17.1.3 理解选项对象 163

17.1.4 理解根组件 163

17.1.5 理解MVVM模型 164

17.2 data的property与methods 164

17.2.1 理解data property 165

17.2.2 理解data methods 165

17.3 生命周期 166

17.3.1 什么是生命周期钩子 166

17.3.2 Vue.js的生命周期 167

17.3.3 实例59:生命周期钩子的例子 168

17.4 小结 171

17.5 练习题 171

第18章 Vue.js组件 172

18.1 组件的基本概念 172

18.1.1 实例60:一个Vue.js组件的示例 172

18.1.2 什么是组件 173

18.1.3 组件的复用 174

18.1.4 Vue组件与Web组件的异同点 175

18.2 组件交互方式 175

18.2.1 实例61:通过prop向子组件传递数据 175

18.2.2 实例62:监听子组件事件 176

18.2.3 实例63:兄弟组件之间的通信 179

18.2.4 实例64:通过插槽分发内容 181

18.3 让组件可以动态加载 183

18.3.1 实现组件动态加载的步骤 183

18.3.2 实例65:动态组件的示例 183

18.4 使用缓存组件keep-alive 188

18.4.1 实例66:keep-alive的例子 188

18.4.2 keep-alive配置详解 189

18.5 小结 190

18.6 练习题 190

第19章 Vue.js模板 191

19.1 模板概述 191

19.2 实例67:插值 192

19.2.1 文本 192

19.2.2 原生HTML代码 192

19.2.3 绑定HTML attribute 193

19.2.4 JavaScript表达式 193

19.3 实例68:在模板中使用指令 194

19.3.1 参数 195

19.3.2 理解指令中的动态参数 195

19.3.3 理解指令中的修饰符 196

19.4 实例69:在模板中使用指令的缩写 196

19.4.1 使用v-bind缩写 196

19.4.2 使用v-on缩写 197

19.5 使用模板的一些约定 197

19.5.1 对动态参数值的约定 197

19.5.2 对动态参数表达式的约定 198

19.5.3 对访问全局变量的约定 198

19.6 小结 198

19.7 练习题 198

第20章 Vue.js计算属性与监听器 199

20.1 通过实例理解“计算属性”的必要性 199

20.2 实例70:一个计算属性的例子 200

20.2.1 声明计算属性 200

20.2.2 模拟数据更改 201

20.3 计算属性缓存与方法的关系 202

20.4 为什么需要侦听器 202

20.4.1 理解侦听器 202

20.4.2 实例71:一个侦听器的例子 202

20.5 小结 204

20.6 练习题 204

第21章 Vue.js表达式 205

21.1 条件表达式 205

21.1.1 实例72:v-if的例子 205

21.1.2 实例73:v-else的例子 206

21.1.3 实例74:v-else-if的例子 206

21.1.4 实例75:v-show的例子 206

21.1.5 v-if与v-show的关系 207

21.2 for循环表达式 207

21.2.1 实例76:v-for遍历数组的例子 207

21.2.2 实例77:v-for遍历数组设置索引的例子 208

21.2.3 实例78:v-for遍历对象property的例子 210

21.2.4 实例79:数组过滤的例子 211

21.2.5 实例80:使用值的范围的例子 212

21.3 v-for的不同使用场景 213

21.3.1 实例81:在中使用v-for的例子 213

21.3.2 实例82:v-for与v-if一同使用的例子 214

21.3.3 实例83:在组件上使用v-for的例子 215

21.4 小结 216

21.5 练习题 216

第22章 Vue.js事件 217

22.1 什么是事件 217

22.1.1 实例84:监听事件的例子 217

22.1.2 理解事件处理方法 218

22.1.3 处理原始的DOM事件 219

22.1.4 为什么需要在HTML代码中监听事件 220

22.2 实例85:多事件处理器的例子 220

22.3 事件修饰符 221

22.3.1 什么是事件修饰符 221

22.3.2 理解按键修饰符 222

22.3.3 理解系统修饰键 223

22.4 小结 224

22.5 练习题 224

第23章 Vue.js表单 225

23.1 理解表单输入绑定 225

23.2 实例86:表单输入绑定的基础用法 225

23.2.1 文本 225

23.2.2 多行文本 226

23.2.3 复选框 227

23.2.4 单选框 228

23.2.5 选择框 229

23.3 实例87:值绑定 230

23.3.1 复选框 230

23.3.2 单选框 231

23.3.3 选择框 232

23.4 小结 233

23.5 练习题 233

第24章 Vue.js HTTP客户端 234

24.1 初识HttpClient 234

24.2 认识网络资源 235

24.3 实例88:获取API数据 235

24.3.1 引入vue-axios 235

24.3.2 获取API数据 235

24.3.3 运行应用 236

24.4 小结 236

24.5 练习题 236

第25章 实战:基于Vue.js和Node.js的互联网应用 237

25.1 应用概述 237

25.1.1 “新闻头条”的核心功能 238

25.1.2 初始化数据库 238

25.2 模型设计 238

25.2.1 用户模型设计 238

25.2.2 新闻模型设计 239

25.3 接口设计 239

25.4 权限管理 239

25.5 小结 240

25.6 练习题 240

第26章 实战:前端UI客户端应用 241

26.1 前端UI设计 241

26.1.1 首页UI设计 241

26.1.2 新闻详情页UI设计 242

26.2 实现UI原型 242

26.2.1 初始化news-ui 242

26.2.2 添加Naive UI 243

26.2.3 创建组件 244

26.2.4 实现新闻列表原型设计 245

26.2.5 实现新闻详情页原型设计 247

26.3 实现路由器 249

26.3.1 理解路由的概念 249

26.3.2 使用路由插件 249

26.3.3 创建路由 249

26.3.4 如何使用路由 250

26.3.5 修改新闻列表组件 251

26.3.6 新闻详情组件增加返回按钮事件处理 252

26.3.7 运行应用 252

26.4 小结 253

26.5 练习题 253

第27章 实战:后端服务器应用 254

27.1 初始化后台应用 254

27.1.1 初始化应用目录 254

27.1.2 初始化应用结构 254

27.1.3 在应用中安装Express 255

27.1.4 编写后台Hello World应用 255

27.1.5 运行后台Hello World应用 256

27.2 初步实现登录认证 256

27.2.1 创建后台管理组件 256

27.2.2 添加组件到路由 256

27.2.3 注入HTTP客户端 257

27.2.4 客户端访问后台接口 257

27.2.5 后台接口设置安全认证 259

27.3 实现新闻编辑器 261

27.3.1 集成md-editor-v3插件 261

27.3.2 导入md-editor-v3组件及样式 261

27.3.3 编写编辑器界面 261

27.3.4 后台创建新增新闻接口 264

27.3.5 运行 266

27.4 实现新闻列表展示 266

27.4.1 后台实现新闻列表查询的接口 266

27.4.2 实现客户端访问新闻列表REST接口 267

27.4.3 运行应用 268

27.5 实现新闻详情展示 269

27.5.1 在后服务器实现查询新闻详情的接口 269

27.5.2 实现客户端访问新闻详情REST接口 270

27.5.3 运行应用 272

27.6 实现认证信息存储及读取 273

27.6.1 实现认证信息的存储 273

27.6.2 实现认证信息的读取 273

27.6.3 改造认证方法 274

27.6.4 改造对外的接口 274

27.7 小结 276

27.8 练习题 276

第28章 实战:使用Nginx实现高可用 277

28.1 Nginx概述与安装 277

28.1.1 Nginx介绍 277

28.1.2 下载、安装、运行Nginx 278

28.1.3 常用命令 281

28.2 部署前端应用 281

28.2.1 编译前端应用 281

28.2.2 部署前端应用编译文件 282

28.2.3 配置Nginx 282

28.3 实现负载均衡及高可用 283

28.3.1 配置负载均衡 284

28.3.2 负载均衡常用算法 284

28.3.3 实现后台服务的高可用 286

28.3.4 运行 287

28.4 小结 287

28.5 练习题 287

参考文献 288