第1章 遇见Vue.js 1
1.1 MVX模式是什么 1
1.1.1 MVC 1
1.1.2 MVP 2
1.1.3 MVVM 3
1.2 Vue.js是什么 4
1.2.1 Vue.js与其他框架的区别 4
1.2.2 如何使用Vue.js 10
1.2.3 Vue.js的发展历史 11
第2章 数据绑定 13
2.1 语法 13
2.1.1 插值 13
2.1.2 表达式 14
2.1.3 指令 14
2.2 分隔符 15
第3章 指令 16
3.1 内部指令 16
3.1.1 v-if 17
3.1.2 v-show 17
3.1.3 v-else 19
3.1.4 v-model 19
3.1.5 v-for 22
3.1.6 v-text 31
3.1.7 v-html 32
3.1.8 v-bind 32
3.1.9 v-on 33
3.1.10 v-ref 35
3.1.11 v-e1 35
3.1.12 v-pre 35
3.1.13 v-cloak 35
3.2 自定义指令 36
3.2.1 基础 36
3.2.2 高级选项 41
3.3 内部指令解析 47
3.4 常见问题解析 50
第4章 计算属性 52
4.1 什么是计算属性 52
4.2 计算属性缓存 53
4.3 常见问题 55
4.3.1 计算属性getter不执行的场景 55
4.3.2 在v-repeat中使用计算属性 56
第5章 表单控件绑定 58
5.1 基本用法 58
5.1.1 text 58
5.1.2 checkbox 58
5.1.3 radio 59
5.1.4 select 60
5.2 值绑定 61
5.3 v-model修饰指令 63
5.3.1 lazy 63
5.3.2 debounce 63
5.3.3 number 63
5.4 修饰指令原理 64
5.4.1 lazy源码解析 64
5.4.2 debounce源码解析 64
5.4.3 number源码解析 65
第6章 过滤器 67
6.1 内置过滤器 68
6.1.1 字母操作 69
6.1.2 json过滤器 69
6.1.3 限制 70
6.1.4 currency过滤器 72
6.1.5 debounce过滤器 73
6.2 自定义过滤器 73
6.2.1 fillter语法 74
6.2.2 教你写一个filter 75
6.3 源码解析 76
6.3.1 管道实现 76
6.3.2 过滤器解析 77
6.4 常见问题解析 78
第7章 Class与Style绑定 80
7.1 绑定HTML Class 80
7.1.1 对象语法 80
7.1.2 数组语法 82
7.2 绑定内联样式 82
7.2.1 对象语法 82
7.2.2 数组语法 83
7.2.3 自动添加前缀 84
第8章 过渡 86
8.1 CSS 过渡 87
8.1.1 内置Class类名 88
8.1.2 自定义CSS类名 89
8.1.3 显式声明CSS过渡类型 89
8.1.4 动画案例 89
8.1.5 过渡流程 90
8.2 JavaScript过渡 92
8.3 渐进过渡 93
第9章 Method 95
9.1 如何绑定事件 95
9.1.1 内联方式 95
9.1.2 methods配置 96
9.1.3 $events应用 97
9.2 如何使用修饰符 97
9.2.1 prevent 98
9.2.2 stop 98
9.2.3 capture 98
9.2.4 self 98
9.2.5 按键 99
9.3 Vue.js 0.1 2到1.0中的变化 99
9.3.1 v-on变更 99
9.3.2 @click缩写 100
第10章 Vue实例方法 101
10.1 实例属性 101
10.1.1 组件树访问 101
10.1.2 DOM访问 102
10.1.3 数据访问 102
10.2 实例方法 102
10.2.1 实例DOM方法的使用 102
10.2.2 实例Event方法的使用 104
第11章 组件 107
11.1 基础 108
11.1.1 注册 108
11.1.2 数据传递 110
11.1.3 混合 123
11.1.4 动态组件 126
11.2 相关拓展 129
11.2.1 组件和v-for 129
11.2.2 编写可复用组件 130
11.2.3 异步组件 130
11.2.4 资源命名约定 131
11.2.5 内联模板 132
11.2.6 片段实例 133
11.3 生命周期 134
11.4 开发组件 136
11.4.1 基础组件 136
11.4.2 基于第三方组件开发 141
11.5 常见问题解析 146
第12章 表单校验 154
12.1 安装 154
12.2 基本使用 155
12.3 验证结果结构 156
12.4 验证器语法 158
12.4.1 校验字段名field 158
12.4.2 校验规则定义 160
12.5 内置验证规则 163
12.5.1 required 163
12.5.2 pattern 165
12.5.3 minlength 165
12.5.4 maxlength 166
12.5.5 min 167
12.5.6 max 167
12.6 与v-model同时使用 168
12.7 重置校验结果 169
12.8 表单元素 169
12.9 各校验状态对应的class 172
12.9.1 自定义校验状态class 173
12.9.2 在其他元素上使用校验状态class 173
12.10 分组校验 174
12.11 错误信息 174
12.11.1 错误信息输出组件 177
12.11.2 动态设置错误信息 180
12.12 事件 182
12.12.1 单个字段校验事件 182
12.12.2 整个表单校验事件 183
12.13 延迟初始化 185
12.14 自定义验证器 186
12.14.1 注册自定义验证器 187
12.14.2 错误信息 188
12.15 自定义验证时机 189
12.16 异步验证 192
12.16.1 注册异步验证器 192
12.16.2 验证器函数context 194
第13章 与服务端通信 196
13.1 vue-resource安装及配置 197
13.1.1 安装 197
13.1.2 参数配置 198
13.1.3 headers配置 199
13.1.4 基本HTTP调用 200
13.1.5 请求选项对象 202
13.1.6 response对象 205
13.1.7 RESTful调用 205
13.1.8 拦截器 207
13.1.9 跨域AJAX 208
13.1.10 Promise 210
13.1.11 url模板 211
13.2 vue-async-data 212
13.2.1 安装 212
13.2.2 使用 212
13.3 常见问题解析 213
13.3.1 如何发送JSONP请求 213
13.3.2 如何修改发送给服务端的数据类型 215
13.3.3 跨域请求出错 215
13.3.4 $.http.post方法变为OPTIONS方法 216
第14章 路由与视图 217
14.1 如何安装 217
14.2 基本使用 218
14.3 视图部分 219
14.3.1 v-link 219
14.3.2 router-view 222
14.4 路由实例 222
14.5 组件路由配置 227
14.5.1 路由切换的各个阶段 227
14.5.2 各阶段的钩子函数介绍 230
14.6 路由匹配 236
14.6.1 动态片段 236
14.6.2 全匹配片段 237
14.6.3 具名路径 237
14.6.4 路由对象 238
14.7 transition对象 239
14.8 嵌套路由 239
14.9 动态加载路由组件 241
14.10 实战 242
14.10.1 浏览器直接引用 242
14.10.2 Webpack模块化开发 244
14.11 常见问题解析 250
第15章 vue-cli 254
15.1 安装 254
15.2 基本使用 254
15.3 命令 257
15.3.1 init 257
15.3.2 list 257
15.4 模板 258
15.4.1 官方模板 258
15.4.2 自定义模板 258
15.4.3 本地模板 259
15.5 不错的工具包 259
15.5.1 commander 259
15.5.2 download-git-repo 259
15.5.3 inquirer 259
15.5.4 ora 260
第16章 测试开发与调试 261
16.1 测试工具 261
16.1.1 ESLint 261
16.1.2 工具包 263
16.2 开发工具 264
16.2.1 Vue Syntax Highlight 264
16.2.2 Snippets 264
16.2.3 其他编辑器/IDE 265
16.3 调试工具 269
第17章 Scrat+Vue.js的化学反应 271
17.1 浅谈前端工程化 271
17.2 前端工程化怎么做 271
17.3 Scrat简介 273
17.4 Scrat+Vue.js实现组件 275
17.5 案例分析 276
17.5.1 准备工作 277
17.5.2 代码实现 279
17.5.3 编译和发布 284
17.6 总结 287
第18章 Vue.js 2.0 288
18.1 API变更 288
18.1.1 全局配置 288
18.1.2 全局API 289
18.1.3 VM 选项 290
18.1.4 实例属性 294
18.1.5 实例方法 294
18.1.6 指令 296
18.1.7 特殊元素 297
18.1.8 服务端渲染 297
18.2 Virtual DOM 297
18.2.1 认识Virtual DOM 297
18.2.2 Virtual DOM在Vue.js 2.0中的实现 299
18.3 服务端渲染技术 315
18.3.1 普通服务端渲染 315
18.3.2 流式服务端渲染 320
18.4 总结 326
第19章 源码篇——util 327
19.1 env 327
19.1.1 系统判断 328
19.1.2 属性支持 328
19.1.3 过渡属性 329
19.1.4 nextTick 330
19.1.5 set 332
19.2 dom 332
19.2.1 dom操作 333
19.2.2 属性操作 339
19.2.3 class操作 341
19.2.4 事件操作 343
19.2.5 其他 344
19.3 lang 347
19.3.1 对象操作 347
19.3.2 名称转换 351
19.3.3 数组操作 352
19.3.4 类型转换 352
19.3.5 方法绑定 354
19.3.6 其他 354
19.4 components 357
19.5 options 359
19.6 debug 364
第20章 源码篇——深入响应式原理 365
20.1 如何追踪变化 365
20.1.1 Observer 367
20.1.2 Directive 372
20.1.3 Watcher 382
20.2 变化检测问题 391
20.3 初始化数据 394
20.4 异步更新队列 395
20.5 计算属性的奥秘 398
20.6 总结 402
第21章 源码篇——父子类合并策略 403
21.1 策略是什么 403
21.1.1 生命周期合并策略 403
21.1.2 属性方法计算 405
21.1.3 数据合并策略 406
第22章 源码篇——缓存 409
22.1 Cache有什么用 409
22.2 LRU 410
22.3 Cache类 410
22.4 put 410
22.5 shift 411
22.6 get 412
第23章 源码篇——属性props 413
23.1 流程设计 413
23.2 属性name 415
23.3 coerce 416
23.4 type验证 416
23.5 default 417
23.6 validator 418
第24章 源码篇——events 419
24.1 events配置是什么 419
24.2 如何配置 419
24.2.1 $emit触发 422
24.2.2 $once绑定 424
24.2.3 $off删除 425
24.2.4 $dispatch派发 426
24.2.5 $broadcast广播 427
第25章 Webpack 428
25.1 安装 428
25.2 基本使用 429
25.3 命令行 430
25.4 配置文件 430
25.4.1 context 431
25.4.2 entry 431
25.4.3 output 432
25.4.4 module 433
25.4.5 resolve 434
25.4.6 devServer 435
25.5 开发调试 435
25.5.1 安装 435
25.5.2 启动服务 435
25.5.3 命令行参数 436
25.5.4 配置文件 436
25.6 使用插件 436
25.6.1 安装 437
25.6.2 常用插件 438
第26章 Rollup 440
26.1 简介 440
26.2 安装 441
26.3 配置 441
26.4 命令 443
26.5 插件 447
26.6 常见问题解析 449
第27章 Browserify 450
27.1 安装 450
27.2 基本使用 450
27.3 转换模块 451
27.3.1 安装转换模块 451
27.3.2 使用转换模块 452
27.3.3 相关转换模块介绍 452
第28章 vue-loader 456
28.1 如何配置 456
28.2 包含内容 456
28.3 特性介绍 457
28.4 常见问题解析 458
28.5 源码解析 459
28.6 工具包介绍 465
第29章 PostCSS 467
29.1 安装 467
29.2 配置 467
29.3 命令 468
29.4 插件 471
第30章 拓展篇 473
30.1 Composition Event 473
30.2 ES 6 474
30.2.1 模块 475
30.2.2 let 479
30.2.3 const 481
30.3 object 482
30.4 函数柯里化 488
30.4.1 动态创建函数 488
30.4.2 参数复用 489