Node.js+MongoDB+AngularWeb开发:MEAN全栈权威指南

Node.js+MongoDB+AngularWeb开发:MEAN全栈权威指南
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: (凯勒·德雷) , [美] (布拉德·德雷) , (布兰登·德雷) ,
2018-10
版次: 1
ISBN: 9787121350962
定价: 129.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 556页
  • Node.js是领先的服务器端编程环境,MongoDB是*受欢迎的NoSQL数据库,而Angular是基于MVC的前端开发的领先框架。它们一起提供了一个易于实现的完全集成的Web开发栈,可以让Web程序员创建从服务器到客户端完全以JavaScript构建的高性能站点和应用程序。针对Angular 2,Angular 4和后续版本进行了更新,这个新版本的Node.js,MongoDB和Angular Web Development将展示如何将这三种技术整合到完整的工作解决方案中。它首先介绍每种技术的简明明了的教程,然后快速地开始构建常见的Web应用程序。 Brad Dayley是一名高级软件工程师,在开发企业应用程序及Web界面方面,他拥有超过20年的工作经验。他熟练应用JavaScript和jQuery多年,并是Learning Angular, jQuery and JavaScript Phrasebook和Sams Teach Yourself AngularJS, JavaScript, and jQuery All in One的作者。他曾设计并实现了一大批应用程序和服务―从应用服务器到复杂的Web应用程序。Brendan Dayley是一名Web应用程序开发人员,他喜欢学习和实施*新、*好的技术。他是Learning Angular和Sams Teach Yourself AngularJS, JavaScript, and jQuery All in One的合著者。他使用JavaScript、TypeScript和Angular编写了大量的Web应用程序,他正在探索新的Web和移动技术(如增强现实)的功能并研究如何将其用于创新解决方案。Caleb Dayley是一名在校大学生,主修计算机科学。他尽可能地学习自己所能学到的东西,并且自学了很多关于程序设计的知识。他自学了几种语言,包括JavaScript、C#,并且使用了本书的第1版。他对未来的发展,以及为有机会帮助设计和开发下一代创新软件感到兴奋,这些软件将继续改善我们生活、工作和娱乐的方式。
    译者卢涛:ITPUB社区版主,20年IT从业经历,先后从事c/c 软件开发、系统分析及Oracle数据库等工作,参加过多个全国性普查数据处理项目的开发和运维,目前主要从事统计报表联网填报系统的后台支持。《剑破冰山――Oracle开发的艺术》作者之一,译有多部技术书籍。 目 录

    引 言 1

    第1 部分 入 门

    第1 章 介绍Node.js-to-Angular 套件 9

    1.1 了解基本的Web 开发框架 9

    1.1.1 用户 10

    1.1.2 浏览器 10

    1.1.3 Web 服务器 12

    1.1.4 后端服务 12

    1.2 了解Node.js-to-Angular 套件组件 13

    1.2.1 Node.js 13

    1.2.2 MongoDB 14

    1.2.3 Express 15

    1.2.4 Angular 15

    1.3 小结 16

    1.4 下一章 16

    第2 章 JavaScript 基础 17

    2.1 定义变量 17

    2.2 了解JavaScript 数据类型 18

    2.3 使用运算符 19

    2.3.1 算术运算符 19

    2.3.2 赋值运算符 20

    VIII 目 录

    2.3.3 运用比较和条件运算符 20

    2.4 实现循环 22

    2.4.1 while 循环 23

    2.4.2 do/while 循环 23

    2.4.3 for 循环 23

    2.4.4 for/in 循环 24

    2.4.5 中断循环 25

    2.5 创建函数 26

    2.5.1 定义函数 26

    2.5.2 将变量传递给函数 26

    2.5.3 从函数返回值 .. 27

    2.5.4 使用匿名函数 .. 27

    2.6 理解变量作用域 .. 28

    2.7 使用JavaScript 对象 28

    2.7.1 使用对象语法 29

    2.7.2 创建自定义对象 30

    2.7.3 使用原型对象模式 30

    2.8 处理字符串 31

    2.8.1 合并字符串 32

    2.8.2 在字符串中搜索子串 33

    2.8.3 在一个字符串中替换单词 33

    2.8.4 将字符串分割成数组 33

    2.9 使用数组 33

    2.9.1 合并数组 35

    2.9.2 遍历数组 35

    2.9.3 将数组转换为字符串 35

    2.9.4 检查数组是否包含某个条目 36

    2.9.5 在数组中添加条目和删除条目 36

    2.10 添加错误处理 36

    2.10.1 try/catch 块 37

    2.10.2 抛出你自己的错误 37

    2.10.3 使用finally 38

    2.11 小结 38

    2.12 下一章 38

    第2 部分 学习Node.js

    第3 章 开始使用Node.js 41

    3.1 了解Node.js 41

    3.1.1 谁在使用Node.js 41

    3.1.2 Node.js 的用途 42

    3.1.3 Node.js 包含的内容 42

    3.2 Node.js 安装 44

    3.2.1 纵观Node.js 安装位置 44

    3.2.2 验证Node.js 可执行文件 44

    3.2.3 选择Node.js IDE 45

    3.3 使用Node 包 45

    3.3.1 什么是Node 封装模块 45

    3.3.2 了解Node 包注册表 46

    3.3.3 使用Node 包管理器 46

    3.3.4 搜索Node 封装模块 47

    3.3.5 安装Node 封装模块 48

    3.3.6 使用package.json 49

    3.4 创建Node.js 应用程序 50

    3.4.1 创建Node.js 模块封装 51

    3.4.2 将一个Node.js 封装模块发布到NPM 注册表 52

    3.4.3 在Node.js 应用程序中使用Node.js 封装模块 54

    3.5 将数据写入控制台 55

    3.6 小结 56

    3.7 下一章 56

    第4 章 在Node.js 中使用事件、监听器、定时器和回调 57

    4.1 了解Node.js 事件模型 57

    4.1.1 比较事件回调和线程模型 57

    4.1.2 在Node.js 中阻塞I/O 58

    4.1.3 会话示例 60

    4.2 将工作添加到事件队列 60

    4.2.1 实现定时器 61

    4.2.2 使用nextTick 来调度工作 64

    4.2.3 实现事件发射器和监听器 65

    4.3 实现回调 68

    4.3.1 向回调函数传递额外的参数 69

    4.3.2 在回调中实现闭包 70

    4.3.3 链式回调 71

    4.4 小结 72

    4.5 下一章 72

    第5 章 在Node.js 中处理数据I/O 73

    5.1 处理JSON 73

    5.1.1 把JSON 转换成JavaScript 对象 73

    5.1.2 把JavaScript 对象转换为JSON 74

    5.2 使用Buffer 模块缓冲数据 74

    5.2.1 了解缓冲数据 75

    5.2.2 创建缓冲区 75

    5.2.3 写入缓冲区 76

    5.2.4 从缓冲区读取 77

    5.2.5 确定缓冲区的长度 78

    5.2.6 复制缓冲区 78

    5.2.7 对缓冲区切片 80

    5.2.8 拼接缓冲区 80

    5.3 使用Stream 模块来传送数据 81

    5.3.1 Readable 流 82

    5.3.2 Writable 流 84

    5.3.3 Duplex 流 86

    5.3.4 Transform 流 88

    5.3.5 把Readable 流用管道输送到Writable 流 89

    5.4 用Zlib 压缩与解压缩数据 91

    5.4.1 压缩和解压缩缓冲区 91

    5.4.2 压缩/解压缩流 93

    5.5 小结 93

    5.6 下一章 93

    第6 章 从Node.js 访问文件系统 95

    6.1 同步和异步文件系统调用 95

    6.2 打开和关闭文件 96

    6.3 写入文件 97

    6.3.1 简单文件写入 97

    6.3.2 同步文件写入 98

    6.3.3 异步写入文件 99

    6.3.4 流式文件写入 101

    6.4 读取文件 102

    6.4.1 简单文件读取 102

    6.4.2 同步文件读取 103

    6.4.3 异步文件读取 104

    6.4.4 流式文件读取 105

    6.5 其他文件系统任务 106

    6.5.1 验证路径的存在性 106

    6.5.2 获取文件信息 107

    6.5.3 列出文件 108

    6.5.4 删除文件 110

    6.5.5 截断文件 110

    6.5.6 建立和删除目录 111

    6.5.7 重命名文件和目录 112

    6.5.8 监视文件更改 112

    6.6 小结 .. 113

    6.7 下一章 113

    第7 章 在Node.js 中实现HTTP 服务 115

    7.1 处理URL 115

    7.1.1 了解URL 对象 116

    7.1.2 解析URL 组件 117

    7.2 处理查询字符串和表单参数 117

    7.3 了解请求、响应和服务器对象 118

    7.3.1 http.ClientRequest 对象 118

    7.3.2 http.ServerResponse 对象 121

    7.3.3 http.IncomingMessage 对象 122

    7.3.4 http.Server 对象 122

    7.4 在Node.js 中实现HTTP 客户端和服务器 124

    7.4.1 提供静态文件服务 124

    7.4.2 实现动态的GET 服务器 126

    7.4.3 实现POST 服务器 128

    7.4.4 与外部源交互 131

    7.5 实现HTTPS 服务器和客户端 133

    7.5.1 创建HTTPS 客户端 134

    7.5.2 创建HTTPS 服务器 135

    7.6 小结 136

    7.7 下一章 136

    第8 章 在Node.js 中实现套接字服务 137

    8.1 了解网络套接字 137

    8.2 了解TCP 服务器和Socket 对象 138

    8.2.1 net.Socket 对象 138

    8.2.2 net.Server 对象 141

    8.3 实现TCP 套接字服务器和客户端 144

    8.3.1 实现TCP 套接字客户端 144

    8.3.2 实现TCP 套接字服务器 146

    8.4 实现TLS 服务器和客户端 149

    8.4.1 创建TLS 套接字客户端 150

    8.4.2 创建TLS 套接字服务器 151

    8.5 小结153

    8.6 下一章 153

    第9 章 在Node.js 中使用多处理器扩展应用程序 155

    9.1 了解process 模块 155

    9.1.1 了解进程I/O 管道 155

    9.1.2 了解进程的信号 156

    9.1.3 使用process 模块控制进程执行 156

    9.1.4 从process 模块获取信息 157

    9.2 实现子进程 159

    9.2.1 了解ChildProcess 对象 159

    9.2.2 使用exec()在另一个进程上执行一个系统命令 161

    9.2.3 使用execFile()在另一个进程上执行一个可执行文件 162

    9.2.4 使用spawn()在另一个Node.js 实例中产生一个进程 163

    9.2.5 实现子派生 165

    9.3 实现进程集群 167

    9.3.1 使用cluster 模块 168

    9.3.2 了解Worker 对象 169

    9.3.3 实现一个HTTP 集群 170

    9.4 小结 172

    9.5 下一章 172

    第10 章 使用其他Node.js 模块 173

    10.1 使用os 模块 173

    10.2 使用util 模块 175

    10.2.1 格式化字符串 175

    10.2.2 检查对象类型 176

    10.2.3 将JavaScript 对象转换为字符串 176

    10.2.4 从其他对象继承功能 177

    10.3 使用dns 模块 178

    10.4 使用crypto 模块 180

    10.5 其他Node 模块和对象 181

    10.6 小结 182

    10.7 下一章 182

    第3 部分 学习MongoDB

    第11 章 了解NoSQL 和MongoDB 185

    11.1 为什么要采用NoSQL 185

    11.2 了解MongoDB 186

    11.2.1 理解集合 186

    11.2.2 了解文档 186

    11.3 MongoDB 的数据类型 187

    11.4 规划你的数据模型 188

    11.4.1 使用文档引用来规范化数据 189

    11.4.2 使用嵌入式文档反规范化数据 190

    11.4.3 使用封顶集合 191

    11.4.4 了解原子写操作 192

    11.4.5 考虑文件增长 192

    11.4.6 识别索引、分片和复制的机会 193

    11.4.7 大集合与大量集合的对比 193

    11.4.8 决定数据生命周期 193

    11.4.9 考虑数据的可用性和性能 194

    11.5 小结 194

    11.6 下一章 194

    第12 章 MongoDB 入门 195

    12.1 构建MongoDB 的环境 195

    12.1.1 MongoDB 的安装 195

    12.1.2 启动MongoDB 196

    12.1.3 停止MongoDB 197

    12.1.4 从shell 客户端访问MongoDB 197

    12.2 管理用户账户 200

    12.2.1 列出用户 200

    12.2.2 创建用户账户 201

    12.2.3 删除用户 202

    12.3 配置访问控制 203

    12.3.1 创建用户管理员账户 203

    12.3.2 打开身份验证 . 204

    12.3.3 创建数据库管理员账户 204

    12.4 管理数据库 205

    12.4.1 显示数据库清单 205

    12.4.2 切换当前数据库 205

    12.4.3 创建数据库 206

    12.4.4 删除数据库 206

    12.4.5 复制数据库 207

    12.5 管理集合 207

    12.5.1 显示数据库中的集合列表 207

    12.5.2 创建集合 208

    12.5.3 删除集合 208

    12.5.4 在集合中查找文档 209

    12.5.5 将文档添加到集合中 210

    12.5.6 从集合中删除文档 210

    12.5.7 更新集合中的文档 211

    12.6 小结 212

    12.7 下一章 212

    第13 章 MongoDB 和Node.js 入门 213

    13.1 把MongoDB 的驱动程序添加到Node.js 213

    13.2 从Node.js 连接到MongoDB 213

    13.2.1 了解写入关注 214

    13.2.2 通过MongoClient 对象从Node.js 连接到MongoDB .214

    13.3 了解用在MongoDB Node.js 驱动程序中的对象 218

    13.3.1 了解Db 对象 218

    13.3.2 了解Admin 对象 220

    13.3.3 了解Collection 对象 220

    13.3.4 了解Cursor 对象 222

    13.4 访问和操作数据库 223

    13.4.1 列出数据库 223

    13.4.2 创建数据库 223

    13.4.3 删除数据库 224

    13.4.4 创建、列出和删除数据库实例 224

    13.4.5 获取MongoDB 服务器的状态 226

    13.5 访问和操作集合 227

    13.5.1 列出集合 227

    13.5.2 创建集合 227

    13.5.3 删除集合 227

    13.5.4 创建、列出和删除集合的示例 228

    13.5.5 获取集合信息 229

    13.6 小结 230

    13.7 下一章 230

    第14 章 从Node.js 操作MongoDB 文档 231

    14.1 了解数据库更改选项 231

    14.2 了解数据库更新运算符 232

    14.3 将文档添加到集合 233

    14.4 从集合获取文档 235

    14.5 更新集合中的文档 237

    14.6 原子地修改文档的集合 239

    14.7 保存集合中的文档 241

    14.8 使用upsert 往集合中插入文档 242

    14.9 从集合中删除文档 244

    14.10 从集合中删除单个文档 246

    14.11 小结 248

    14.12 下一章 248

    第15 章 从Node.js 访问MongoDB 249

    15.1 介绍数据集 249

    15.2 了解query 对象 250

    15.3 了解查询options 对象 251

    15.4 查找特定文档集合 252

    15.5 清点文档数量 255

    15.6 对结果集进行限制 257

    15.6.1 按大小限制结果 257

    15.6.2 限制对象返回的字段 258

    15.6.3 对结果进行分页 260

    15.7 对结果集进行排序 262

    15.8 查找不同的字段值 263

    15.9 对结果进行分组 265

    15.10 通过聚合结果来应用MapReduce 269

    15.10.1 了解aggregate()方法 269

    15.10.2 使用聚合框架运算符 270

    15.10.3 实现聚合表达式运算符 272

    15.10.4 聚合的例子 273

    15.11 小结 274

    15.12 下一章 274

    第16 章 利用Mongoose 来使用结构化模式与验证 275

    16.1 了解Mongoose 275

    16.2 利用Mongoose 连接到MongoDB 数据库 276

    16.3 定义模式 278

    16.3.1 了解路径 278

    16.3.2 创建一个模式定义 278

    16.3.3 把索引添加到一个模式 279

    16.3.4 实现字段的唯一性 280

    16.3.5 强制字段的必需性 280

    16.3.6 往Schema 模型添加方法 280

    16.3.7 在words 数据库上实现模式 281

    16.4 编译模型 282

    16.5 了解Query 对象 282

    16.5.1 设置查询数据库操作 283

    16.5.2 设置查询数据库操作选项 284

    16.5.3 设置查询运算符 285

    16.6 了解Document 对象 287

    16.7 利用Mongoose 查找文档 288

    16.8 利用Mongoose 添加文档 290

    16.9 利用Mongoose 更新文档 292

    16.9.1 保存文档更改 292

    16.9.2 更新单个文档 293

    16.9.3 更新多个文档 295

    16.10 利用Mongoose 删除文档 296

    16.10.1 删除单个文档 296

    16.10.2 删除多个文档 298

    16.11 利用Mongoose 聚合文档 299

    16.12 使用验证框架 302

    16.13 实现中间件函数 304

    16.14 小结 306

    16.15 下一章 307

    第17 章 高级MongoDB 概念 309

    17.1 添加索引 309

    17.2 使用封顶集合 311

    17.3 应用复制 312

    17.3.1 复制策略 314

    17.3.2 部署一个副本集 314

    17.4 实施分片 315

    17.4.1 分片服务器类型 316

    17.4.2 选择一个分片键 317

    17.4.3 选择一种分区方法 318

    17.4.4 部署一个分片的MongoDB 集群 319

    17.5 修复MongoDB 数据库 322

    17.6 备份MongoDB 323

    17.7 小结 324

    17.8 下一章 324

    第4 部分 使用Express 使生活更轻松

    第18 章 在Node.js 中实现Express 327

    18.1 Express 入门 327

    18.1.1 配置Express 设置 327

    18.1.2 启动Express 服务器 328

    18.2 配置路由 329

    18.2.1 实现路由 329

    18.2.2 在路由中应用参数 330

    18.3 使用Request 对象 334

    18.4 使用Response 对象 336

    18.4.1 设置标头 336

    18.4.2 设置状态 337

    18.4.3 发送响应 337

    18.4.4 发送JSON 响应 339

    18.4.5 发送文件 341

    18.4.6 发送下载响应 342

    18.4.7 重定向响应 343

    18.5 实现一个模板引擎 343

    18.5.1 定义引擎 344

    18.5.2 加入本地对象 345

    18.5.3 创建模板 345

    18.5.4 在响应中呈现模板 347

    18.6 小结 348

    18.7 下一章 348

    第19 章 实现Express 中间件 349

    19.1 了解中间件 349

    19.1.1 在全局范围内把中间件分配给某个路径 350

    19.1.2 把中间件分配到单个路由 350

    19.1.3 添加多个中间件函数 351

    19.2 使用query 中间件 351

    19.3 提供静态文件服务 351

    19.4 处理POST 正文数据 353

    19.5 发送和接收cookie 354

    19.6 实现会话 356

    19.7 应用基本的HTTP 身份验证 358

    19.8 实现会话身份验证 359

    19.9 创建自定义中间件 362

    19.10 小结 363

    19.11 下一章 364

    第5 部分 学习Angular

    第20 章 TypeScript 入门 367

    20.1 学习不同的类型 367

    20.2 了解接口 369

    20.3 实现类 370

    20.4 实现模块 371

    20.5 理解函数 372

    20.6 小结 373

    20.7 下一章 373

    第21 章 Angular 入门 375

    21.1 为什么选择Angular 375

    21.2 了解Angular 375

    21.2.1 模块 376

    21.2.2 指令 376

    21.2.3 数据绑定 376

    21.2.4 依赖注入 376

    21.2.5 服务 377

    21.3 职责分离 377

    21.4 为你的环境添加Angular 377

    21.5 使用Angular CLI 378

    21.6 创建一个基本的Angular 应用程序 379

    21.6.1 创建你的第一个Angular 应用程序 380

    21.6.2 了解和使用NgModule 381

    21.6.3 创建Angular 引导程序 382

    21.7 小结 386

    21.8 下一章 386

    第22 章 Angular 组件 387

    22.1 组件配置 387

    22.2 建立模板 388

    22.3 使用构造函数 391

    22.4 使用外部模板 392

    22.5 注入指令 394

    22.5.1 使用依赖注入构建嵌套组件 395

    22.5.2 通过依赖注入传递数据 397

    22.5.3 创建使用输入的Angular 应用程序 397

    22.6 小结 399

    22.7 下一章 399

    第23 章 表达式 401

    23.1 使用表达式 401

    23.1.1 使用基本表达式 402

    23.1.2 在表达式中与Component 类交互 404

    23.1.3 在Angular 表达式中使用TypeScript 405

    23.2 使用管道 408

    23.3 建立一个自定义管道 412

    23.4 小结 414

    23.5 下一章 414

    第24 章 数据绑定 415

    24.1 了解数据绑定 415

    24.1.1 插值 415

    24.1.2 性质绑定 417

    24.1.3 属性绑定 419

    24.1.4 类绑定 419

    24.1.5 样式绑定 420

    24.1.6 事件绑定 421

    24.1.7 双向绑定 424

    24.2 小结 426

    24.3 下一章 426

    第25 章 内置指令 427

    25.1 了解指令 427

    25.2 使用内置指令 427

    25.2.1 组件指令 428

    25.2.2 结构指令 428

    25.2.3 属性指令 431

    25.3 小结 434

    25.4 下一章 434

    第6 部分 高级Angular

    第26 章 自定义指令 437

    26.1 创建自定义属性指令 437

    26.2 使用组件创建自定义指令 440

    26.3 小结 444

    26.4 下一章 444

    第27 章 事件和变更检测 445

    27.1 使用浏览器事件 445

    27.2 发出自定义事件 446

    27.2.1 将自定义事件发送到父组件层次结构 . 446

    27.2.2 使用监听器处理自定义事件 . 446

    27.2.3 在嵌套组件中实现自定义事件 446

    27.2.4 从子组件中删除父组件中的数据 448

    27.3 使用可观察物 452

    27.3.1 创建一个可观察物对象 452

    27.3.2 利用可观察物观察数据变化 453

    27.4 小结 455

    27.5 下一章 456

    第28 章 在Web 应用程序中实现Angular 服务 457

    28.1 了解Angular 服务 457

    28.2 使用内置的服务 457

    28.3 使用http 服务发送HTTP GET 和PUT 请求 458

    28.3.1 配置HTTP 请求 459

    28.3.2 实现HTTP 响应回调函数 459

    28.3.3 实现一个简单的JSON 文件并使用http 服务来访问它 460

    28.4 使用http 服务实现一个简单的模拟服务器 463

    28.5 使用router 服务更改视图 474

    28.5.1 在Angular 中使用routes 475

    28.5.2 实现一个简单的路由 476

    28.6 用导航栏实现路由 479

    28.7 实现带参数的路由 484

    28.8 小结 488

    28.9 下一章 488

    第29 章 创建自己的自定义Angular 服务 489

    29.1 将自定义服务集成到Angular 应用程序中 489

    29.2 实现一个使用常量数据服务的简单应用程序 490

    29.3 实现数据转换服务 492

    29.4 实现可变数据服务 496

    29.5 实现一个返回promise 的服务 500

    29.6 实现共享服务 501

    29.7 小结 508

    29.8 下一章 508

    第30 章 玩转Angular 509

    30.1 实现使用动画服务的Angular 应用程序 509

    30.2 实现放大图像的Angular 应用程序 514

    30.3 实现启用拖放的Angular 应用程序 517

    30.4 实现星级评级的Angular 组件 522

    30.5 小结 530
  • 内容简介:
    Node.js是领先的服务器端编程环境,MongoDB是*受欢迎的NoSQL数据库,而Angular是基于MVC的前端开发的领先框架。它们一起提供了一个易于实现的完全集成的Web开发栈,可以让Web程序员创建从服务器到客户端完全以JavaScript构建的高性能站点和应用程序。针对Angular 2,Angular 4和后续版本进行了更新,这个新版本的Node.js,MongoDB和Angular Web Development将展示如何将这三种技术整合到完整的工作解决方案中。它首先介绍每种技术的简明明了的教程,然后快速地开始构建常见的Web应用程序。
  • 作者简介:
    Brad Dayley是一名高级软件工程师,在开发企业应用程序及Web界面方面,他拥有超过20年的工作经验。他熟练应用JavaScript和jQuery多年,并是Learning Angular, jQuery and JavaScript Phrasebook和Sams Teach Yourself AngularJS, JavaScript, and jQuery All in One的作者。他曾设计并实现了一大批应用程序和服务―从应用服务器到复杂的Web应用程序。Brendan Dayley是一名Web应用程序开发人员,他喜欢学习和实施*新、*好的技术。他是Learning Angular和Sams Teach Yourself AngularJS, JavaScript, and jQuery All in One的合著者。他使用JavaScript、TypeScript和Angular编写了大量的Web应用程序,他正在探索新的Web和移动技术(如增强现实)的功能并研究如何将其用于创新解决方案。Caleb Dayley是一名在校大学生,主修计算机科学。他尽可能地学习自己所能学到的东西,并且自学了很多关于程序设计的知识。他自学了几种语言,包括JavaScript、C#,并且使用了本书的第1版。他对未来的发展,以及为有机会帮助设计和开发下一代创新软件感到兴奋,这些软件将继续改善我们生活、工作和娱乐的方式。
    译者卢涛:ITPUB社区版主,20年IT从业经历,先后从事c/c 软件开发、系统分析及Oracle数据库等工作,参加过多个全国性普查数据处理项目的开发和运维,目前主要从事统计报表联网填报系统的后台支持。《剑破冰山――Oracle开发的艺术》作者之一,译有多部技术书籍。
  • 目录:
    目 录

    引 言 1

    第1 部分 入 门

    第1 章 介绍Node.js-to-Angular 套件 9

    1.1 了解基本的Web 开发框架 9

    1.1.1 用户 10

    1.1.2 浏览器 10

    1.1.3 Web 服务器 12

    1.1.4 后端服务 12

    1.2 了解Node.js-to-Angular 套件组件 13

    1.2.1 Node.js 13

    1.2.2 MongoDB 14

    1.2.3 Express 15

    1.2.4 Angular 15

    1.3 小结 16

    1.4 下一章 16

    第2 章 JavaScript 基础 17

    2.1 定义变量 17

    2.2 了解JavaScript 数据类型 18

    2.3 使用运算符 19

    2.3.1 算术运算符 19

    2.3.2 赋值运算符 20

    VIII 目 录

    2.3.3 运用比较和条件运算符 20

    2.4 实现循环 22

    2.4.1 while 循环 23

    2.4.2 do/while 循环 23

    2.4.3 for 循环 23

    2.4.4 for/in 循环 24

    2.4.5 中断循环 25

    2.5 创建函数 26

    2.5.1 定义函数 26

    2.5.2 将变量传递给函数 26

    2.5.3 从函数返回值 .. 27

    2.5.4 使用匿名函数 .. 27

    2.6 理解变量作用域 .. 28

    2.7 使用JavaScript 对象 28

    2.7.1 使用对象语法 29

    2.7.2 创建自定义对象 30

    2.7.3 使用原型对象模式 30

    2.8 处理字符串 31

    2.8.1 合并字符串 32

    2.8.2 在字符串中搜索子串 33

    2.8.3 在一个字符串中替换单词 33

    2.8.4 将字符串分割成数组 33

    2.9 使用数组 33

    2.9.1 合并数组 35

    2.9.2 遍历数组 35

    2.9.3 将数组转换为字符串 35

    2.9.4 检查数组是否包含某个条目 36

    2.9.5 在数组中添加条目和删除条目 36

    2.10 添加错误处理 36

    2.10.1 try/catch 块 37

    2.10.2 抛出你自己的错误 37

    2.10.3 使用finally 38

    2.11 小结 38

    2.12 下一章 38

    第2 部分 学习Node.js

    第3 章 开始使用Node.js 41

    3.1 了解Node.js 41

    3.1.1 谁在使用Node.js 41

    3.1.2 Node.js 的用途 42

    3.1.3 Node.js 包含的内容 42

    3.2 Node.js 安装 44

    3.2.1 纵观Node.js 安装位置 44

    3.2.2 验证Node.js 可执行文件 44

    3.2.3 选择Node.js IDE 45

    3.3 使用Node 包 45

    3.3.1 什么是Node 封装模块 45

    3.3.2 了解Node 包注册表 46

    3.3.3 使用Node 包管理器 46

    3.3.4 搜索Node 封装模块 47

    3.3.5 安装Node 封装模块 48

    3.3.6 使用package.json 49

    3.4 创建Node.js 应用程序 50

    3.4.1 创建Node.js 模块封装 51

    3.4.2 将一个Node.js 封装模块发布到NPM 注册表 52

    3.4.3 在Node.js 应用程序中使用Node.js 封装模块 54

    3.5 将数据写入控制台 55

    3.6 小结 56

    3.7 下一章 56

    第4 章 在Node.js 中使用事件、监听器、定时器和回调 57

    4.1 了解Node.js 事件模型 57

    4.1.1 比较事件回调和线程模型 57

    4.1.2 在Node.js 中阻塞I/O 58

    4.1.3 会话示例 60

    4.2 将工作添加到事件队列 60

    4.2.1 实现定时器 61

    4.2.2 使用nextTick 来调度工作 64

    4.2.3 实现事件发射器和监听器 65

    4.3 实现回调 68

    4.3.1 向回调函数传递额外的参数 69

    4.3.2 在回调中实现闭包 70

    4.3.3 链式回调 71

    4.4 小结 72

    4.5 下一章 72

    第5 章 在Node.js 中处理数据I/O 73

    5.1 处理JSON 73

    5.1.1 把JSON 转换成JavaScript 对象 73

    5.1.2 把JavaScript 对象转换为JSON 74

    5.2 使用Buffer 模块缓冲数据 74

    5.2.1 了解缓冲数据 75

    5.2.2 创建缓冲区 75

    5.2.3 写入缓冲区 76

    5.2.4 从缓冲区读取 77

    5.2.5 确定缓冲区的长度 78

    5.2.6 复制缓冲区 78

    5.2.7 对缓冲区切片 80

    5.2.8 拼接缓冲区 80

    5.3 使用Stream 模块来传送数据 81

    5.3.1 Readable 流 82

    5.3.2 Writable 流 84

    5.3.3 Duplex 流 86

    5.3.4 Transform 流 88

    5.3.5 把Readable 流用管道输送到Writable 流 89

    5.4 用Zlib 压缩与解压缩数据 91

    5.4.1 压缩和解压缩缓冲区 91

    5.4.2 压缩/解压缩流 93

    5.5 小结 93

    5.6 下一章 93

    第6 章 从Node.js 访问文件系统 95

    6.1 同步和异步文件系统调用 95

    6.2 打开和关闭文件 96

    6.3 写入文件 97

    6.3.1 简单文件写入 97

    6.3.2 同步文件写入 98

    6.3.3 异步写入文件 99

    6.3.4 流式文件写入 101

    6.4 读取文件 102

    6.4.1 简单文件读取 102

    6.4.2 同步文件读取 103

    6.4.3 异步文件读取 104

    6.4.4 流式文件读取 105

    6.5 其他文件系统任务 106

    6.5.1 验证路径的存在性 106

    6.5.2 获取文件信息 107

    6.5.3 列出文件 108

    6.5.4 删除文件 110

    6.5.5 截断文件 110

    6.5.6 建立和删除目录 111

    6.5.7 重命名文件和目录 112

    6.5.8 监视文件更改 112

    6.6 小结 .. 113

    6.7 下一章 113

    第7 章 在Node.js 中实现HTTP 服务 115

    7.1 处理URL 115

    7.1.1 了解URL 对象 116

    7.1.2 解析URL 组件 117

    7.2 处理查询字符串和表单参数 117

    7.3 了解请求、响应和服务器对象 118

    7.3.1 http.ClientRequest 对象 118

    7.3.2 http.ServerResponse 对象 121

    7.3.3 http.IncomingMessage 对象 122

    7.3.4 http.Server 对象 122

    7.4 在Node.js 中实现HTTP 客户端和服务器 124

    7.4.1 提供静态文件服务 124

    7.4.2 实现动态的GET 服务器 126

    7.4.3 实现POST 服务器 128

    7.4.4 与外部源交互 131

    7.5 实现HTTPS 服务器和客户端 133

    7.5.1 创建HTTPS 客户端 134

    7.5.2 创建HTTPS 服务器 135

    7.6 小结 136

    7.7 下一章 136

    第8 章 在Node.js 中实现套接字服务 137

    8.1 了解网络套接字 137

    8.2 了解TCP 服务器和Socket 对象 138

    8.2.1 net.Socket 对象 138

    8.2.2 net.Server 对象 141

    8.3 实现TCP 套接字服务器和客户端 144

    8.3.1 实现TCP 套接字客户端 144

    8.3.2 实现TCP 套接字服务器 146

    8.4 实现TLS 服务器和客户端 149

    8.4.1 创建TLS 套接字客户端 150

    8.4.2 创建TLS 套接字服务器 151

    8.5 小结153

    8.6 下一章 153

    第9 章 在Node.js 中使用多处理器扩展应用程序 155

    9.1 了解process 模块 155

    9.1.1 了解进程I/O 管道 155

    9.1.2 了解进程的信号 156

    9.1.3 使用process 模块控制进程执行 156

    9.1.4 从process 模块获取信息 157

    9.2 实现子进程 159

    9.2.1 了解ChildProcess 对象 159

    9.2.2 使用exec()在另一个进程上执行一个系统命令 161

    9.2.3 使用execFile()在另一个进程上执行一个可执行文件 162

    9.2.4 使用spawn()在另一个Node.js 实例中产生一个进程 163

    9.2.5 实现子派生 165

    9.3 实现进程集群 167

    9.3.1 使用cluster 模块 168

    9.3.2 了解Worker 对象 169

    9.3.3 实现一个HTTP 集群 170

    9.4 小结 172

    9.5 下一章 172

    第10 章 使用其他Node.js 模块 173

    10.1 使用os 模块 173

    10.2 使用util 模块 175

    10.2.1 格式化字符串 175

    10.2.2 检查对象类型 176

    10.2.3 将JavaScript 对象转换为字符串 176

    10.2.4 从其他对象继承功能 177

    10.3 使用dns 模块 178

    10.4 使用crypto 模块 180

    10.5 其他Node 模块和对象 181

    10.6 小结 182

    10.7 下一章 182

    第3 部分 学习MongoDB

    第11 章 了解NoSQL 和MongoDB 185

    11.1 为什么要采用NoSQL 185

    11.2 了解MongoDB 186

    11.2.1 理解集合 186

    11.2.2 了解文档 186

    11.3 MongoDB 的数据类型 187

    11.4 规划你的数据模型 188

    11.4.1 使用文档引用来规范化数据 189

    11.4.2 使用嵌入式文档反规范化数据 190

    11.4.3 使用封顶集合 191

    11.4.4 了解原子写操作 192

    11.4.5 考虑文件增长 192

    11.4.6 识别索引、分片和复制的机会 193

    11.4.7 大集合与大量集合的对比 193

    11.4.8 决定数据生命周期 193

    11.4.9 考虑数据的可用性和性能 194

    11.5 小结 194

    11.6 下一章 194

    第12 章 MongoDB 入门 195

    12.1 构建MongoDB 的环境 195

    12.1.1 MongoDB 的安装 195

    12.1.2 启动MongoDB 196

    12.1.3 停止MongoDB 197

    12.1.4 从shell 客户端访问MongoDB 197

    12.2 管理用户账户 200

    12.2.1 列出用户 200

    12.2.2 创建用户账户 201

    12.2.3 删除用户 202

    12.3 配置访问控制 203

    12.3.1 创建用户管理员账户 203

    12.3.2 打开身份验证 . 204

    12.3.3 创建数据库管理员账户 204

    12.4 管理数据库 205

    12.4.1 显示数据库清单 205

    12.4.2 切换当前数据库 205

    12.4.3 创建数据库 206

    12.4.4 删除数据库 206

    12.4.5 复制数据库 207

    12.5 管理集合 207

    12.5.1 显示数据库中的集合列表 207

    12.5.2 创建集合 208

    12.5.3 删除集合 208

    12.5.4 在集合中查找文档 209

    12.5.5 将文档添加到集合中 210

    12.5.6 从集合中删除文档 210

    12.5.7 更新集合中的文档 211

    12.6 小结 212

    12.7 下一章 212

    第13 章 MongoDB 和Node.js 入门 213

    13.1 把MongoDB 的驱动程序添加到Node.js 213

    13.2 从Node.js 连接到MongoDB 213

    13.2.1 了解写入关注 214

    13.2.2 通过MongoClient 对象从Node.js 连接到MongoDB .214

    13.3 了解用在MongoDB Node.js 驱动程序中的对象 218

    13.3.1 了解Db 对象 218

    13.3.2 了解Admin 对象 220

    13.3.3 了解Collection 对象 220

    13.3.4 了解Cursor 对象 222

    13.4 访问和操作数据库 223

    13.4.1 列出数据库 223

    13.4.2 创建数据库 223

    13.4.3 删除数据库 224

    13.4.4 创建、列出和删除数据库实例 224

    13.4.5 获取MongoDB 服务器的状态 226

    13.5 访问和操作集合 227

    13.5.1 列出集合 227

    13.5.2 创建集合 227

    13.5.3 删除集合 227

    13.5.4 创建、列出和删除集合的示例 228

    13.5.5 获取集合信息 229

    13.6 小结 230

    13.7 下一章 230

    第14 章 从Node.js 操作MongoDB 文档 231

    14.1 了解数据库更改选项 231

    14.2 了解数据库更新运算符 232

    14.3 将文档添加到集合 233

    14.4 从集合获取文档 235

    14.5 更新集合中的文档 237

    14.6 原子地修改文档的集合 239

    14.7 保存集合中的文档 241

    14.8 使用upsert 往集合中插入文档 242

    14.9 从集合中删除文档 244

    14.10 从集合中删除单个文档 246

    14.11 小结 248

    14.12 下一章 248

    第15 章 从Node.js 访问MongoDB 249

    15.1 介绍数据集 249

    15.2 了解query 对象 250

    15.3 了解查询options 对象 251

    15.4 查找特定文档集合 252

    15.5 清点文档数量 255

    15.6 对结果集进行限制 257

    15.6.1 按大小限制结果 257

    15.6.2 限制对象返回的字段 258

    15.6.3 对结果进行分页 260

    15.7 对结果集进行排序 262

    15.8 查找不同的字段值 263

    15.9 对结果进行分组 265

    15.10 通过聚合结果来应用MapReduce 269

    15.10.1 了解aggregate()方法 269

    15.10.2 使用聚合框架运算符 270

    15.10.3 实现聚合表达式运算符 272

    15.10.4 聚合的例子 273

    15.11 小结 274

    15.12 下一章 274

    第16 章 利用Mongoose 来使用结构化模式与验证 275

    16.1 了解Mongoose 275

    16.2 利用Mongoose 连接到MongoDB 数据库 276

    16.3 定义模式 278

    16.3.1 了解路径 278

    16.3.2 创建一个模式定义 278

    16.3.3 把索引添加到一个模式 279

    16.3.4 实现字段的唯一性 280

    16.3.5 强制字段的必需性 280

    16.3.6 往Schema 模型添加方法 280

    16.3.7 在words 数据库上实现模式 281

    16.4 编译模型 282

    16.5 了解Query 对象 282

    16.5.1 设置查询数据库操作 283

    16.5.2 设置查询数据库操作选项 284

    16.5.3 设置查询运算符 285

    16.6 了解Document 对象 287

    16.7 利用Mongoose 查找文档 288

    16.8 利用Mongoose 添加文档 290

    16.9 利用Mongoose 更新文档 292

    16.9.1 保存文档更改 292

    16.9.2 更新单个文档 293

    16.9.3 更新多个文档 295

    16.10 利用Mongoose 删除文档 296

    16.10.1 删除单个文档 296

    16.10.2 删除多个文档 298

    16.11 利用Mongoose 聚合文档 299

    16.12 使用验证框架 302

    16.13 实现中间件函数 304

    16.14 小结 306

    16.15 下一章 307

    第17 章 高级MongoDB 概念 309

    17.1 添加索引 309

    17.2 使用封顶集合 311

    17.3 应用复制 312

    17.3.1 复制策略 314

    17.3.2 部署一个副本集 314

    17.4 实施分片 315

    17.4.1 分片服务器类型 316

    17.4.2 选择一个分片键 317

    17.4.3 选择一种分区方法 318

    17.4.4 部署一个分片的MongoDB 集群 319

    17.5 修复MongoDB 数据库 322

    17.6 备份MongoDB 323

    17.7 小结 324

    17.8 下一章 324

    第4 部分 使用Express 使生活更轻松

    第18 章 在Node.js 中实现Express 327

    18.1 Express 入门 327

    18.1.1 配置Express 设置 327

    18.1.2 启动Express 服务器 328

    18.2 配置路由 329

    18.2.1 实现路由 329

    18.2.2 在路由中应用参数 330

    18.3 使用Request 对象 334

    18.4 使用Response 对象 336

    18.4.1 设置标头 336

    18.4.2 设置状态 337

    18.4.3 发送响应 337

    18.4.4 发送JSON 响应 339

    18.4.5 发送文件 341

    18.4.6 发送下载响应 342

    18.4.7 重定向响应 343

    18.5 实现一个模板引擎 343

    18.5.1 定义引擎 344

    18.5.2 加入本地对象 345

    18.5.3 创建模板 345

    18.5.4 在响应中呈现模板 347

    18.6 小结 348

    18.7 下一章 348

    第19 章 实现Express 中间件 349

    19.1 了解中间件 349

    19.1.1 在全局范围内把中间件分配给某个路径 350

    19.1.2 把中间件分配到单个路由 350

    19.1.3 添加多个中间件函数 351

    19.2 使用query 中间件 351

    19.3 提供静态文件服务 351

    19.4 处理POST 正文数据 353

    19.5 发送和接收cookie 354

    19.6 实现会话 356

    19.7 应用基本的HTTP 身份验证 358

    19.8 实现会话身份验证 359

    19.9 创建自定义中间件 362

    19.10 小结 363

    19.11 下一章 364

    第5 部分 学习Angular

    第20 章 TypeScript 入门 367

    20.1 学习不同的类型 367

    20.2 了解接口 369

    20.3 实现类 370

    20.4 实现模块 371

    20.5 理解函数 372

    20.6 小结 373

    20.7 下一章 373

    第21 章 Angular 入门 375

    21.1 为什么选择Angular 375

    21.2 了解Angular 375

    21.2.1 模块 376

    21.2.2 指令 376

    21.2.3 数据绑定 376

    21.2.4 依赖注入 376

    21.2.5 服务 377

    21.3 职责分离 377

    21.4 为你的环境添加Angular 377

    21.5 使用Angular CLI 378

    21.6 创建一个基本的Angular 应用程序 379

    21.6.1 创建你的第一个Angular 应用程序 380

    21.6.2 了解和使用NgModule 381

    21.6.3 创建Angular 引导程序 382

    21.7 小结 386

    21.8 下一章 386

    第22 章 Angular 组件 387

    22.1 组件配置 387

    22.2 建立模板 388

    22.3 使用构造函数 391

    22.4 使用外部模板 392

    22.5 注入指令 394

    22.5.1 使用依赖注入构建嵌套组件 395

    22.5.2 通过依赖注入传递数据 397

    22.5.3 创建使用输入的Angular 应用程序 397

    22.6 小结 399

    22.7 下一章 399

    第23 章 表达式 401

    23.1 使用表达式 401

    23.1.1 使用基本表达式 402

    23.1.2 在表达式中与Component 类交互 404

    23.1.3 在Angular 表达式中使用TypeScript 405

    23.2 使用管道 408

    23.3 建立一个自定义管道 412

    23.4 小结 414

    23.5 下一章 414

    第24 章 数据绑定 415

    24.1 了解数据绑定 415

    24.1.1 插值 415

    24.1.2 性质绑定 417

    24.1.3 属性绑定 419

    24.1.4 类绑定 419

    24.1.5 样式绑定 420

    24.1.6 事件绑定 421

    24.1.7 双向绑定 424

    24.2 小结 426

    24.3 下一章 426

    第25 章 内置指令 427

    25.1 了解指令 427

    25.2 使用内置指令 427

    25.2.1 组件指令 428

    25.2.2 结构指令 428

    25.2.3 属性指令 431

    25.3 小结 434

    25.4 下一章 434

    第6 部分 高级Angular

    第26 章 自定义指令 437

    26.1 创建自定义属性指令 437

    26.2 使用组件创建自定义指令 440

    26.3 小结 444

    26.4 下一章 444

    第27 章 事件和变更检测 445

    27.1 使用浏览器事件 445

    27.2 发出自定义事件 446

    27.2.1 将自定义事件发送到父组件层次结构 . 446

    27.2.2 使用监听器处理自定义事件 . 446

    27.2.3 在嵌套组件中实现自定义事件 446

    27.2.4 从子组件中删除父组件中的数据 448

    27.3 使用可观察物 452

    27.3.1 创建一个可观察物对象 452

    27.3.2 利用可观察物观察数据变化 453

    27.4 小结 455

    27.5 下一章 456

    第28 章 在Web 应用程序中实现Angular 服务 457

    28.1 了解Angular 服务 457

    28.2 使用内置的服务 457

    28.3 使用http 服务发送HTTP GET 和PUT 请求 458

    28.3.1 配置HTTP 请求 459

    28.3.2 实现HTTP 响应回调函数 459

    28.3.3 实现一个简单的JSON 文件并使用http 服务来访问它 460

    28.4 使用http 服务实现一个简单的模拟服务器 463

    28.5 使用router 服务更改视图 474

    28.5.1 在Angular 中使用routes 475

    28.5.2 实现一个简单的路由 476

    28.6 用导航栏实现路由 479

    28.7 实现带参数的路由 484

    28.8 小结 488

    28.9 下一章 488

    第29 章 创建自己的自定义Angular 服务 489

    29.1 将自定义服务集成到Angular 应用程序中 489

    29.2 实现一个使用常量数据服务的简单应用程序 490

    29.3 实现数据转换服务 492

    29.4 实现可变数据服务 496

    29.5 实现一个返回promise 的服务 500

    29.6 实现共享服务 501

    29.7 小结 508

    29.8 下一章 508

    第30 章 玩转Angular 509

    30.1 实现使用动画服务的Angular 应用程序 509

    30.2 实现放大图像的Angular 应用程序 514

    30.3 实现启用拖放的Angular 应用程序 517

    30.4 实现星级评级的Angular 组件 522

    30.5 小结 530
查看详情