第一部分 简介与关键概念 2
第1章 为什么需要同构JavaScript 2
1.1定义同构JavaScript 3
1.2评价其他的Web应用架构方案 3
1.2.1状况的改变 3
1.2.2工程上的关注点 4
1.2.3可选架构 4
1.3附加说明:何时不使用同构 10
1.4小结 11
第2章 同构JavaScript图谱 12
2.1共享视图 13
2.1.1共享模板 14
2.1.2共享视图逻辑 14
2.2共享路由 14
2.3共享模型 15
2.4小结 15
第3章 同构JavaScript分类 16
3.1与环境无关的代码 18
3.2为每个特定环境提供shim 19
3.3小结 20
第4章 超越服务器端的渲染 21
4.1实时Web应用 22
4.1.1同构API 23
4.1.2双向数据同步 23
4.1.3在服务器端进行客户端仿真 23
4.2小结 24
第二部分 构建第一个应用 26
第5章 起步 26
5.1Node的安装和运行 27
5.1.1从源码安装 27
5.1.2与Node REPL交互 28
5.1.3使用npm管理项目 28
5.2建立应用项目 29
5.2.1初始化项目 29
5.2.2安装应用服务器 31
5.2.3编写下一代的JavaScript(ES6) 32
5.2.4将ES6编译为ES5 34
5.2.5建立开发流程 35
5.3小结 39
第6章 提供第一份HTML文档 40
6.1提供HTML模板 40
6.2使用路径参数与查询参数 42
6.3小结 45
第7章 设计应用架构 46
7.1理解问题 47
7.2响应用户请求 47
7.2.1创建Application类 47
7.2.2创建控制器 49
7.2.3构造控制器实例 50
7.2.4拓展控制器 52
7.2.5改进响应流 53
7.3小结 57
第8章 将应用传输到客户端 58
8.1打包应用的客户端版本 58
8.1.1选择打包库 58
8.1.2创建打包任务 59
8.1.3添加客户端实现 61
8.2响应用户请求 62
8.2.1利用History API 63
8.2.2响应并调用Histoty API 63
8.3客户端路由 67
8.4组织代码 73
8.5小结 75
第9章 创建常用的抽象 76
9.1何时抽象,为什么需要抽象 76
9.2获取和设置cookie 77
9.3重定向请求 84
9.4小结 88
第10章 序列化、反序列化和添加事件监听 89
10.1序列化数据 90
10.2创建控制器实例 92
10.3反序列化数据 93
10.4添加DOM事件处理器 94
10.5验证rehydration过程 96
10.6小结 98
第11章 结束感言 99
11.1生产准备 99
11.2衡量架构 99
11.3小结 102
第三部分 现实世界的解决方案 104
第12章 沃尔玛实验室的同构React.js方案 104
12.1物种起源 104
12.1.1问题 105
12.1.2解决方案 106
12.2React模板与模式 106
12.2.1在服务器端渲染 106
12.2.2在客户端恢复 110
12.3沃尔玛采用的方法 112
12.4克服挑战 112
12.4.1首字节时间 112
12.4.2组件渲染优化 113
12.4.3性能提升 117
12.5下一步 119
12.6感谢 120
12.7补充说明 120
第13章 全栈Angular 121
13.1同构JavaScript:Web应用的未来 122
13.2同构Angular1 122
13.3Angular2服务器端渲染 124
13.3.1服务器端渲染的用例 124
13.3.2Web应用脱节 126
13.3.3Angular2渲染架构 127
13.3.4Preboot 128
13.4Angular Universal 128
13.5GetHuman.com 130
13.6补充说明 131
第14章 Brisket 132
14.1问题 132
14.2两全其美 134
14.3早期Brisket 135
14.4成为现实 136
14.5代码自由 136
14.6跨环境一致的API 139
14.6.1模型/集合 140
14.6.2视图生命周期 140
14.6.3子视图管理 141
14.6.4跨环境使用的工具 141
14.7前进之路 142
14.7.1ClientApp与ServerApp 142
14.7.2布局模板 142
14.7.3其他经验教训 143
14.8Brisket的下一步? 143
14.9补充说明 144
第15章 Colony案例研究:脱离Node创建同构应用 145
15.1问题 145
15.2模板 146
15.3数据 147
15.4转译视图模型 148
15.5布局 150
15.6页面生成器 152
15.7前端SPA 152
15.8最终架构 153
15.9后续计划 154
第16章 结语 155
16.1设计模式、Flux和同构JavaScript家族 155
16.1.1永远相信JavaScript 156
16.1.2命名与理解 157
关于作者 159
关于封面 159