For the Node.js, MongoDB and AngularJS Web Development Book
1.1.1 用户
1.1.2 浏览器
1.1.3 Web服务器
1.1.4 后端服务
1.2.1 Node.js
1.2.2 MongoDB
1.2.3 Express
1.2.4 AngularJS
2.3.1 算术运算符
2.3.2 赋值运算符
2.3.3 运用比较和条件运算符
2.4.1 while循环
2.4.2 do/while循环
2.4.3 for循环
2.4.4 for/in循环
2.4.5 中断循环
2.5.1 定义函数
2.5.2 传递变量给函数
2.5.3 从函数返回值
2.5.4 使用匿名函数
2.7.1 使用对象语法
2.7.2 创建自定义对象
2.7.3 使用原型对象模式
2.8.1 合并字符串
2.8.2 在字符串中搜索子串
2.8.3 在一个字符串中替换单词
2.8.4 将字符串分割成数组
2.9.1 合并数组
2.9.2 遍历数组
2.9.3 将数组转换为字符串
2.9.4 检查数组是否包含某个条目
2.9.5 在数组中添加条目和删除条目
2.10.1 try/catch块
2.10.2 抛出你自己的错误
2.10.3 使用finally
3.1.1 谁在使用Node.js
3.1.2 Node.js的用途
3.2.1 纵观Node.js安装位置
3.2.2 验证Node.js可执行文件
3.2.3 选择Node.js IDE
3.3.1 什么是Node封装模块
3.3.2 了解Node包注册表
3.3.3 使用Node包管理器
3.3.4 搜索Node封装模块
3.3.5 安装Node封装模块
3.3.6 使用package.json
3.4.1 创建Node.js模块封装
3.4.2 将一个Node.js封装模块发布到NPM注册表
3.4.3 在Node.js应用程序中使用Node.js封装模块
4.1.1 比较事件回调和线程模型
4.1.2 在Node.js中阻塞I/O
4.1.3 会话示例
4.2.1 实现定时器
4.2.2 使用nextTick来调度工作
4.2.3 实现事件发射器和监听器
4.3.1 向回调函数传递额外的参数
4.3.2 在回调中实现闭包
4.3.3 链式回调
5.1.1 把JSON转换成JavaScript对象
5.1.2 把JavaScript对象转换为JSON
5.2.1 了解缓冲数据
5.2.2 创建缓冲区
5.2.3 写入缓冲区
5.2.4 从缓冲区读取
5.2.5 确定缓冲区长度
5.2.6 复制缓冲区
5.2.7 对缓冲区切片
5.2.8 拼接缓冲区
5.3.1 Readable流
5.3.2 Writable流
5.3.3 Duplex流
5.3.4 Transform流
5.3.5 把Readable流用管道输送到Writable流
5.4.1 压缩和解压缩缓冲区
5.4.2 压缩/解压缩流
6.3.1 简单文件写入
6.3.2 同步文件写入
6.3.3 异步写入文件
6.3.4 流式文件写入
6.4.1 简单文件读取
6.4.2 同步文件读取
6.4.3 异步文件读取
6.4.4 流式文件读取
6.5.1 验证路径的存在性
6.5.2 获取文件信息
6.5.3 列出文件
6.5.4 删除文件
6.5.5 截断文件
6.5.6 建立和删除目录
6.5.7 重命名文件和目录
6.5.8 监视文件更改入
7.1.1 了解URL对象
7.1.2 解析URL组件
7.3.1 http.ClientRequest对象
7.3.2 http.ServerResponse对象
7.3.3 http.IncomingMessage对象
7.3.4 HTTP Server对象
7.4.1 提供静态文件服务
7.4.2 实现动态的GET服务器
7.4.3 实现POST服务器
7.4.4 与外部源交互
7.5.1 创建HTTPS客户端
7.5.2 创建HTTPS服务器
8.2.1 net.Socket对象
8.2.2 net.Server对象
8.3.1 实现TCP套接字客户端
8.3.2 实现TCP套接字服务器
8.4.1 创建TLS套接字客户端
8.4.2 创建TLS套接字服务器
9.1.1 了解进程I/O管道
9.1.2 了解进程的信号
9.1.3 使用process模块控制进程执行
9.1.4 从process模块获取信息
9.2.1 了解ChildProcess对象
9.2.2 使用exec()在另一个进程上执行一个系统命令
9.2.3 使用execFile()在另一个进程上执行一个可执行文件
9.2.4 使用spawn()在另一个Node.js实例中产生一个进程
9.2.5 实现子派生
9.3.1 使用cluster模块
9.3.2 了解Worker对象
9.3.3 实现一个HTTP集群
10.2.1 格式化字符串
10.2.2 检查对象类型
10.2.3 同步写入输出流
10.2.4 将JavaScript对象转换为字符串
10.2.5 从其他对象继承功能
10.2.6 使用dns模块
11.2.1 理解集合
11.2.2 了解文档
11.4.1 使用文档引用来规范化数据
11.4.2 使用嵌入式文档反规范化数据
11.4.3 使用封顶集合
11.4.4 了解原子写操作
11.4.5 考虑文件增长
11.4.6 识别索引、分片和复制的机会
11.4.7 大集合与大量集合的对比
11.4.8 决定数据生命周期
11.4.9 考虑数据的可用性和性能
12.1.1 MongoDB的安装
12.1.2 启动MongoDB
12.1.3 停止MongoDB
12.1.4 从shell客户端访问MongoDB
12.2.1 列出用户
12.2.2 创建用户账户
12.2.3 删除用户
12.3.1 创建用户管理员账户
12.3.2 打开身份验证
12.3.3 创建数据库管理员账户
12.4.1 显示数据库清单
12.4.2 切换当前数据库
12.4.3 创建数据库
12.4.4 删除数据库
12.4.5 复制数据库
12.5.1 显示数据库中的集合列表
12.5.2 创建集合
12.5.3 删除集合
12.5.4 在集合中查找文档
12.5.5 将文档添加到集合中
12.5.6 从集合中删除文档
12.5.7 更新集合中的文档
13.2.1 了解写入关注
13.2.2 了解Server对象
13.2.3 通过Client对象连接到MongoDB
13.2.4 通过一个连接字符串连接到MongoDB
13.3.1 了解Db对象
13.3.2 了解Admin对象
13.3.3 了解Collection对象
13.3.4 了解Cursor对象
13.4.1 列出数据库
13.4.2 创建数据库
13.4.3 删除数据库
13.4.4 创建、列出和删除数据库实例
13.4.5 获取MongoDB服务器的状态
13.5.1 列出集合
13.5.2 创建集合
13.5.3 删除集合
13.5.4 创建、列出和删除集合的示例
13.5.5 获取集合信息
15.6.1 按大小限制结果
15.6.2 限制对象返回的字段
15.6.3 对结果进行分页
15.10.1 了解aggregate()方法
15.10.2 使用聚合框架运算符
15.10.3 实现聚合表达式运算符
15.10.4 聚合的例子
16.3.1 了解路径
16.3.2 创建一个模式定义
16.3.3 把索引添加到一个模式
16.3.4 实现字段的唯一性
16.3.5 强制字段的必需性
16.3.6 添加Schema对象的方法
16.3.7 在words数据库上实现一个模式
16.5.1 设置查询数据库操作
16.5.2 设置查询数据库操作选项
16.5.3 设置查询运算符
16.9.1 保存文档更改
16.9.2 更新单个文档
16.9.3 更新多个文档
16.10.1 删除单个文档
16.10.2 删除多个文档
17.3.1 复制策略
17.3.2 部署一个副本集
17.4.1 分片服务器类型
17.4.2 选择一个分片键
17.4.3 选择一种分区方法
17.4.4 部署一个分片的MongoDB集群
17.5.1 在Node.js实现Grid对象
17.5.2 在Node.js实现GridStore对象
18.1.1 配置Express设置
18.1.2 启动Express服务器
18.2.1 实现路由
18.2.2 在路由中应用参数
18.4.1 设置标头
18.4.2 设置状态
18.4.3 发送响应
18.4.4 发送JSON响应
18.4.5 发送文件
18.4.6 发送下载响应
18.4.7 重定向响应
18.5.1 定义一个模板引擎
18.5.2 加入本地对象
18.5.3 创建模板
18.5.4 在响应中呈现模板
19.1.1 在全局范围内把中间件分配给某个路径
19.1.2 把中间件分配到单个路由
19.1.3 添加多个中间件函数
20.2.1 模块
20.2.2 作用域和数据模型
20.2.3 具有模板和指令的视图
20.2.4 表达式
20.2.5 控制器
20.2.6 数据绑定
20.2.7 服务
20.2.8 依赖注入
20.2.9 职责分离
20.3.1 引导阶段
20.3.2 编译阶段
20.3.3 运行时数据绑定阶段
20.8.1 加载AngularJS库和你的主模块
20.8.2 定义AngularJS应用程序根元素
20.8.3 将控制器添加到模板
20.8.4 实现作用域模型
21.1.1 了解模块
21.1.2 依赖注入
21.2.1 创建AngularJS Module对象
21.2.2 使用配置块
21.2.3 使用运行块
21.2.4 把提供器添加到AngularJS模块
22.1.1 根作用域和应用程序之间的关系
22.1.2 作用域和控制器之间的关系
22.1.3 作用域和模板之间的关系
22.1.4 作用域和后端服务器数据之间的关系
22.1.5 作用域的生命周期
23.3.1 使用内置过滤器
23.3.2 使用过滤器来实现排序和过滤
24.2.1 支持AngularJS功能的指令
24.2.2 扩展表单元素的指令
24.2.3 把模型绑定到页面元素的指令
24.2.4 把页面事件绑定到控制器的指令
24.3.1 定义指令视图模板
24.3.2 限制指令行为
24.3.3 更换模板元素
24.3.4 转置外部作用域
24.3.5 配置指令的作用域
24.3.6 操纵DOM的链接功能
24.3.7 添加一个控制器到指令
24.3.8 创建自定义指令
25.2.1 使用$http服务发送HTTP的GET和PUT请求
25.2.2 使用$cacheFactory服务
25.2.3 使用$window服务实现浏览器警报
25.2.4 使用$cookieStore服务与浏览器cookie交互
25.2.5 使用$interval和$timeout服务实现定时器
25.2.6 使用$animate服务
25.3.1 创建value服务
25.3.2 创建constant服务
25.3.3 创建factory服务
25.3.4 创建service服务
25.3.5 把服务集成在一个模块中
26.6.1 实现用户注册路由
26.6.2 实现用户登录路由
26.6.3 实现获得用户配置文件的路由
26.6.4 实现更新用户路由
26.6.5 实现删除用户路由
26.6.6 完整的用户控制器代码
26.7.1 实现signup视图
26.7.2 实现index视图
26.7.3 实现login视图
26.7.4 实现user视图
26.7.5 添加CSS代码到样式视图
26.9.1 添加Passport
26.9.2 添加身份验证策略
26.9.3 实现应用程序中间件
26.9.4 添加已验证身份的用户序列化和反序列化
26.9.5 实现路由以使用身份验证
26.9.6 使用谷歌验证身份
27.3.1 定义Page模型
27.3.2 定义Photo模型
27.3.3 定义CommentThread模型
27.6.1 实现Page模型控制器
27.6.2 实现Photo模型控制器
27.6.3 实现CommentThread模型控制器
27.7.1 实现照片视图
27.7.2 实现评论主题视图
27.7.3 实现评论视图
27.7.4 添加CSS来设置视图的样式
27.8.1 创建一个评论服务
27.8.2 实现照片控制器
27.8.3 实现页面AngularJS控制器
27.8.4 完整的AngularJS应用程序
28.4.1 定义地址模式
28.4.2 定义账单模式
28.4.3 定义产品模式
28.4.4 定义数量模式
28.4.5 定义订单模式
28.4.6 定义顾客模式
28.7.1 实现产品模型控制器
28.7.2 实现订单模型控制器
28.7.3 实现顾客模型控制器
28.8.1 实现购物视图
28.8.2 实现产品视图
28.8.3 实现产品页面视图
28.8.4 实现购物车视图
28.8.5 实现发货视图
28.8.6 实现账单视图
28.8.7 实现复核视图
28.8.8 实现订单视图
28.8.9 添加CSS来设置视图的样式
28.9.1 初始化购物作用域
28.9.2 实现辅助函数
28.9.3 将物品添加到购物车
28.9.4 从购物车删除物品
28.9.5 结账
28.9.6 设置发货信息
28.9.7 验证账单
28.9.8 执行购买
28.9.9 完整的控制器
29.7.1 创建AngularJS选项卡视图模板
29.7.2 定义窗格模板
29.7.3 定义卡片模板
29.7.4 实现选项卡视图
29.7.5 实现AngularJS自定义指令
29.7.6 设置卡片视图的样式
29.8.1 创建后端天气服务
29.8.2 定义天气AngularJS控制器
29.8.3 定义天气AngularJS视图
29.8.4 设置天气视图的样式
29.9.1 定义可拖动的自定义AngularJS指令
29.9.2 在AngularJS视图中实现可拖动的指令
29.9.3 设置可拖动视图的样式
29.10.1 创建/words路由的Express路由控制器
29.10.2 定义表格AngularJS控制器
29.10.3 实现表格AngularJS视图
29.10.4 设置表格视图的样式