第一部分 核心CoffeeScript第1章 从这里开始 2
1.1 CoffeeScript的REPL 2
1.2 浏览器端编译 4
1.3 警告 6
1.4 命令行编译 6
1.5 CoffeeScript命令行界面 7
1.5.1 output标志 7
1.5.2 bare标志 8
1.5.3 print标志 9
1.5.4 watch标志 9
1.5.5 执行CoffeeScript文件 10
1.5.6 其他选项 10
1.6 小结 10
第2章 基础知识 11
2.1 语法 11
2.1.1 有意义的空格 12
2.1.2 function关键字 13
2.1.3 括号 14
2.2 作用域与变量 15
2.2.1 JavaScript中的变量作用域 15
2.2.2 CoffeeScript中的变量作用域 16
2.2.3 匿名封装器函数 17
2.3 插值 19
2.3.1 字符串插值 19
2.3.2 插值字符串 20
2.3.3 文本字符串 22
2.3.4 heredoc 24
2.3.5 注释 25
2.3.6 内联注释 25
2.3.7 块级注释 26
2.4 扩展的正则表达式 26
2.5 小结 27
第3章 控制结构 28
3.1 操作符与别名 28
3.1.1 运算 28
3.1.2 赋值 30
3.1.3 比较 34
3.1.4 字符串 36
3.1.5 与存在相关操作符 37
3.1.6 别名 39
3.1.7 is与isnt别名 40
3.1.8 not别名 41
3.1.9 and与or别名 42
3.1.10 布尔相关的别名 43
3.1.11 @别名 44
3.2 if/unless 45
3.2.1 if语句 46
3.2.2 if/else语句 47
3.2.3 if/else if语句 48
3.2.4 unless语句 50
3.2.5 内联条件语句 52
3.3 switch/case语句 52
3.4 小结 54
第4章 函数与参数 55
4.1 函数基础 57
4.2 参数 59
4.3 默认参数值 61
4.4 splat操作符 63
4.5 小结 67
第5章 集合与迭代 68
5.1 数组 68
5.1.1 检测是否包含 70
5.1.2 交换赋值 71
5.1.3 多重赋值(又称解构赋值) 72
5.2 区间 75
5.2.1 分割数组 78
5.2.2 替换数组值 79
5.2.3 注入数值 80
5.3 对象/散列 81
5.3.1 设置属性/获取属性 85
5.3.2 解构赋值 87
5.4 循环与迭代 89
5.4.1 迭代数组 89
5.4.2 迭代对象 92
5.4.3 while循环 96
5.4.4 until循环 97
5.5 comprehension 98
5.6 do关键字 101
5.7 小结 103
第6章 类 104
6.1 定义类 104
6.2 定义函数 105
6.3 constructor函数 106
6.4 类中的作用域 108
6.5 扩展类 117
6.6 类级函数 124
6.7 原型函数 128
6.8 绑定(->与=>) 129
6.9 小结 135
第二部分 CoffeeScript实践第7章 Cake与Cakefile 138
7.1 从这里开始 138
7.2 创建Cake任务 138
7.3 执行Cake任务 139
7.4 使用选项 140
7.5 调用其他任务 143
7.6 小结 146
第8章 使用Jasmine测试 147
8.1 安装Jasmine 148
8.2 准备Jasmine环境 148
8.3 Jasmine介绍 150
8.4 单元测试 151
8.5 Before与After 156
8.6 自定义匹配器 162
8.7 小结 164
第9章 Node.js介绍 166
9.1 什么是Node.js 166
9.2 安装Node 167
9.3 从这里开始 168
9.4 流化响应 170
9.5 构建CoffeeScript服务器 171
9.6 验收我们的服务器 184
9.7 小结 185
第10章 示例:待办事宜列表第1部分(服务器端) 186
10.1 安装并设置Express 187
10.2 使用Mongoose建立MongoDB数据库 190
10.3 编写待办事宜API 193
10.4 用Mongoose做查询操作 194
10.4.1 查找所有待办事宜 194
10.4.2 创建新的待办事宜 196
10.4.3 获取、更新以及销毁待办事宜 197
10.4.4 简化控制器 199
10.5 小结 202
第11章 示例:待办事宜列表第2部分(客户端,使用jQuery) 203
11.1 用Twitter的Bootstrap来构建HTML 203
11.2 使用jQuery进行交互 206
11.3 给新建待办事宜表单添加功能 207
11.4 列举现有的待办事宜 212
11.5 更新待办事宜 212
11.6 删除待办事宜 215
11.7 小结 216
第12章 示例:待办事宜列表第3部分(客户端,使用Backbone.js) 217
12.1 什么是Backbone.js 217
12.2 配置Backbone.is 218
12.3 编写Todo模型与集合 221
12.4 使用视图来罗列待办事宜 224
12.5 创建新的待办事宜 226
12.6 每个待办事宜一个视图 229
12.6.1 从视图层更新和校验模型 230
12.6.2 校验 232
12.7 从视图删除模型 233
12.8 小结 234