商家名称 | 信用等级 | 购买信息 | 订购本书 |
![]() |
大型JavaScript应用最佳实践指南 | ![]() |
|
![]() |
大型JavaScript应用最佳实践指南 | ![]() |
作者:(加)Adam Boduch (亚当·博达哈) 译者:奇舞团
王韦华:网名Aztack。前端技术专家。曾就职百度、奇虎360等国内知名互联网公司。拥有丰富的Web前端开发经验,擅长JavaScript、Ruby、Java、C++等语言。个人博客https://aztack.wang。 Adam Boduch有着10年的大规模JavaScript开发经验。在转向前端之前,他使用Python和Linux参与过几款高级的云计算产品。Adam Boduch有着实际软件系统的实践经验,对开发者提出的扩展性挑战以及复杂性都很熟悉。同时他也写过几本有关JavaScript的书籍,包括Lo-Dash核心入门。他热衷于用户体验和高性能的革新。
1 扩展JavaScript 应用 ................................................................................. 1
影响扩展的因素 ....................................................................................................................... 2
对可扩展的需要 ................................................................................................................................... 2
不断增长的用户 ................................................................................................................................... 3
添加新功能 ........................................................................................................................................... 3
雇佣更多的开发者 ............................................................................................................................... 4
架构角度 .................................................................................................................................. 5
浏览器是一个独特的环境 ....................................................................................................... 5
组件设计 ............................................................................................................................................... 7
组件通信 ............................................................................................................................................... 7
加载时间 ............................................................................................................................................... 8
响应性 ................................................................................................................................................... 9
可寻址性 ............................................................................................................................................... 9
可配置性 ............................................................................................................................................. 10
架构性取舍 ............................................................................................................................. 11
确定不可变内容 ................................................................................................................................. 11
从开发的便捷性考虑性能 .................................................................................................................. 11
性能的可配置性 ................................................................................................................................. 12
从可替换性考虑性能 .......................................................................................................................... 13
可寻址性的开发便捷性 ...................................................................................................................... 13
性能的可维护性 ................................................................................................................................. 13
减少功能以提高可维护性 .................................................................................................................. 14
利用框架 ............................................................................................................................................. 15
框架与类库 ............................................................................................................................. 16
一致地实现模式 ................................................................................................................................. 16
内建的性能 ......................................................................................................................................... 16
利用社区智慧 ..................................................................................................................................... 16
框架并非天生支持扩展 ...................................................................................................................... 17
小结 ........................................................................................................................................ 17
2 可扩展性的影响因素 ................................................................................ 19
扩展用户 ................................................................................................................................ 20
许可证费用 ......................................................................................................................................... 20
订阅费用 ............................................................................................................................................. 21
消耗费用 ............................................................................................................................................. 21
广告支持 ............................................................................................................................................. 21
开源 ..................................................................................................................................................... 22
与用户沟通 ......................................................................................................................................... 23
支持机制 ............................................................................................................................................. 24
反馈机制 ............................................................................................................................................. 25
提示用户 ............................................................................................................................................. 26
用户维度 ............................................................................................................................................. 26
扩展用户示例 ..................................................................................................................................... 27
扩展功能 ................................................................................................................................ 28
应用价值 ............................................................................................................................................. 28
“杀手级”功能与“杀死”应用的功能 .......................................................................................... 29
数据驱动的功能 ................................................................................................................................. 30
与竞品比较 ......................................................................................................................................... 30
修改已有的功能 ................................................................................................................................. 31
支持用户分组和角色 .......................................................................................................................... 32
增加新服务 ......................................................................................................................................... 32
扩展功能示例 ..................................................................................................................................... 34
开发的可扩展性 ..................................................................................................................... 34
寻找开发资源 ..................................................................................................................................... 35
开发职责 ............................................................................................................................................. 36
资源过多 ............................................................................................................................................. 36
扩展开发示例 ..................................................................................................................................... 37
影响因素检查表 ..................................................................................................................... 37
用户检查清单 ..................................................................................................................................... 38
功能清单 ............................................................................................................................................. 39
开发者清单 ......................................................................................................................................... 41
小结 ........................................................................................................................................ 41
3 组件组合 .................................................................................................. 43
通用组件 ................................................................................................................................ 44
模块 ..................................................................................................................................................... 44
路由器 ................................................................................................................................................. 46
模型/集合 ............................................................................................................................................ 50
控制器/视图 ........................................................................................................................................ 53
模板 ..................................................................................................................................................... 55
应用特定的组件 ................................................................................................................................. 56
扩展通用组件 ......................................................................................................................... 56
识别公用数据、功能 .......................................................................................................................... 56
扩展路由器组件 ................................................................................................................................. 57
扩展模型/集合 .................................................................................................................................... 58
扩展控制器/视图 ................................................................................................................................ 59
将功能映射到组件 ................................................................................................................. 60
通用功能 ............................................................................................................................................. 61
特定功能 ............................................................................................................................................. 61
解构组件 ................................................................................................................................ 62
维护和调试组件 ................................................................................................................................. 62
重构复杂组件 ..................................................................................................................................... 64
可插拔的业务逻辑 ................................................................................................................. 64
扩展与配置 ......................................................................................................................................... 65
无状态的业务逻辑 .............................................................................................................................. 65
组织组件代码 ......................................................................................................................... 66
小结 ........................................................................................................................................ 67
4 组件的通信与职责.................................................................................... 69
通信模型 ................................................................................................................................ 69
消息传递模型 ..................................................................................................................................... 70
事件模型 ............................................................................................................................................. 70
通信数据结构 ......................................................................................................................... 71
命名约定 ............................................................................................................................................. 71
数据格式 ............................................................................................................................................. 72
公共数据 ............................................................................................................................................. 73
可追踪的组件通信 ................................................................................................................. 74
订阅事件 ............................................................................................................................................. 74
全局事件日志 ..................................................................................................................................... 74
事件的生命周期 ................................................................................................................................. 77
通信的开销 ............................................................................................................................. 77
事件的频率 ......................................................................................................................................... 78
回调函数执行时间 .............................................................................................................................. 80
事件复杂度 ......................................................................................................................................... 81
通信责任区 ............................................................................................................................. 82
后端API ............................................................................................................................................. 82
Web Socket 用于更新状态 .................................................................................................................. 83
DOM 更新........................................................................................................................................... 85
松耦合的通信 ......................................................................................................................... 86
替换组件 ............................................................................................................................................. 86
应对意外事件 ..................................................................................................................................... 87
组件分层 ................................................................................................................................ 90
事件流向 ............................................................................................................................................. 90
开发者的职责 ..................................................................................................................................... 91
构建代码思维导图 .............................................................................................................................. 91
小结 ........................................................................................................................................ 92
5 寻址和导航 .............................................................................................. 93
实现路由的方法 ..................................................................................................................... 93
Hash URI ............................................................................................................................................. 94
传统URI ............................................................................................................................................. 94
路由是如何工作的 ................................................................................................................. 95
路由的职责 ......................................................................................................................................... 95
路由事件 ............................................................................................................................................. 96
URI 的结构和模式 ................................................................................................................. 96
编码信息 ............................................................................................................................................. 97
设计URI ............................................................................................................................................. 97
将资源映射到URI ................................................................................................................. 99
手动创建URI ..................................................................................................................................... 99
自动生成资源URI .............................................................................................................................. 99
触发路由 ............................................................................................................................... 103
用户行为 ........................................................................................................................................... 103
重定向用户 ....................................................................................................................................... 104
路由配置 ............................................................................................................................... 104
静态路由声明 ................................................................................................................................... 105
注册事件 ........................................................................................................................................... 105
禁用路由 ........................................................................................................................................... 105
故障排查 ............................................................................................................................... 108
路由器冲突 ....................................................................................................................................... 108
记录初始配置 ................................................................................................................................... 110
记录路由事件 ................................................................................................................................... 110
处理非法资源的状态 ........................................................................................................................ 110
小结 ...................................................................................................................................... 111
6 用户偏好和默认设置 ............................................................................... 113
偏好类型 ............................................................................................................................... 113
地区 ................................................................................................................................................... 113
行为 ................................................................................................................................................... 114
外观 ................................................................................................................................................... 115
支持地区 ............................................................................................................................... 115
决定支持哪些地区 ............................................................................................................................ 115
维护地区 ........................................................................................................................................... 116
设置地区 ............................................................................................................................... 116
选择地区 ........................................................................................................................................... 117
存储地区偏好 ................................................................................................................................... 117
URI 中的地区 ................................................................................................................................... 118
通用组件配置 ....................................................................................................................... 118
选择配置的值 ................................................................................................................................... 119
存储和硬编码默认值 ........................................................................................................................ 119
对后端的影响 ................................................................................................................................... 120
加载配置值 ....................................................................................................................................... 121
配置行为 ............................................................................................................................... 122
启用和禁用组件 ............................................................................................................................... 122
改变数量 ........................................................................................................................................... 123
改变顺序 ........................................................................................................................................... 124
配置通知 ........................................................................................................................................... 126
行内选项 ........................................................................................................................................... 126
改变外观 ............................................................................................................................... 127
主题工具 ........................................................................................................................................... 127
选择一个主题 ................................................................................................................................... 128
单独的样式偏好 ............................................................................................................................... 128
性能影响 ............................................................................................................................... 128
可配置地区的性能 ............................................................................................................................ 129
可配置行为的性能 ............................................................................................................................ 129
可配置主题的性能 ............................................................................................................................ 132
小结 ...................................................................................................................................... 132
7 加载时间和响应速度 ............................................................................... 135
组件构件 ............................................................................................................................... 135
组件依赖 ........................................................................................................................................... 135
构建组件 ........................................................................................................................................... 136
加载组件 ............................................................................................................................... 137
加载模块 ........................................................................................................................................... 137
懒惰的模块加载 ............................................................................................................................... 138
模块加载的延迟 ............................................................................................................................... 139
通信瓶颈 ............................................................................................................................... 141
减少间接引用 ................................................................................................................................... 141
分析代码 ........................................................................................................................................... 143
组件优化 ............................................................................................................................... 145
维护状态的组件 ............................................................................................................................... 145
处理副作用 ....................................................................................................................................... 146
DOM 渲染技术 ................................................................................................................................. 148
API 数据 ............................................................................................................................... 150
加载延迟 ........................................................................................................................................... 150
处理大数据集 ................................................................................................................................... 151
优化运行时组件 ................................................................................................................... 152
小结 ...................................................................................................................................... 153
8 可移植性和测试 ...................................................................................... 155
与后端解耦 ........................................................................................................................... 155
模拟后端API ................................................................................................................................... 155
前端入口 ........................................................................................................................................... 156
模拟工具 ........................................................................................................................................... 157
生成模拟数据集 ............................................................................................................................... 158
执行操作 ........................................................................................................................................... 159
功能设计过程 ....................................................................................................................... 159
设计API ........................................................................................................................................... 160
实现模拟数据 ................................................................................................................................... 160
实现功能 ........................................................................................................................................... 161
协调模拟数据与真实数据 ................................................................................................................ 162
单元测试工具 ....................................................................................................................... 163
框架自带的工具 ............................................................................................................................... 163
独立的单元测试工具 ........................................................................................................................ 164
工具链和自动化 ............................................................................................................................... 165
测试模拟场景 ....................................................................................................................... 166
模拟API 和测试固件 ........................................................................................................................ 166
场景生成工具 ................................................................................................................................... 167
端到端测试和持续集成 ....................................................................................................... 168
小结 ...................................................................................................................................... 169
9 缩小规模 ................................................................................................. 171
扩展限制 ............................................................................................................................... 171
JavaScript 文件体积 .......................................................................................................................... 172
网络带宽 ........................................................................................................................................... 173
内存消耗 ........................................................................................................................................... 175
CPU 消耗 .......................................................................................................................................... 177
后端能力 ........................................................................................................................................... 179
互相矛盾的功能 ................................................................................................................... 180
重叠的功能 ....................................................................................................................................... 181
冗余的功能 ....................................................................................................................................... 182
用户需求 ........................................................................................................................................... 182
设计失效 ............................................................................................................................... 183
多余的组件 ....................................................................................................................................... 184
低效的数据处理 ............................................................................................................................... 186
过度创建标记 ................................................................................................................................... 190
应用组合 ............................................................................................................................... 191
功能的启动 ....................................................................................................................................... 191
新功能的影响 ................................................................................................................................... 192
重要的库 ........................................................................................................................................... 192
小结 ...................................................................................................................................... 193
10 处理错误 ............................................................................................... 195
快速失效 ............................................................................................................................... 195
使用质量约束 ................................................................................................................................... 196
提供有意义的反馈 ............................................................................................................................ 196
当无法快速失效时…… .................................................................................................................... 197
容错 ...................................................................................................................................... 198
区分关键行为 ................................................................................................................................... 198
探测和控制错误行为 ........................................................................................................................ 199
禁用出错组件 ................................................................................................................................... 202
优雅地降级功能 ............................................................................................................................... 203
故障恢复 ............................................................................................................................... 204
重试失败操作 ................................................................................................................................... 204
重启组件 ........................................................................................................................................... 207
用户手动干涉 ................................................................................................................................... 208
当我们无法从故障中恢复…… ........................................................................................................ 209
性能和复杂度 ....................................................................................................................... 210
异常处理 ........................................................................................................................................... 210
状态检查 ........................................................................................................................................... 211
通知其他组件 ................................................................................................................................... 211
记录日志和调试 ................................................................................................................... 212
有意义的错误日志 ............................................................................................................................ 212
为潜在故障发出警告 ........................................................................................................................ 213
通知和指导用户 ............................................................................................................................... 214
改进架构 ............................................................................................................................... 214
记录错误场景 ................................................................................................................................... 215
改进组件分类 ................................................................................................................................... 215
复杂导致出错 ................................................................................................................................... 216
小结 ...................................................................................................................................... 216
网友对大型JavaScript应用最佳实践指南的评论
喜欢大型JavaScript应用最佳实践指南请与您的朋友分享,由于版权原因,读书人网不提供图书下载服务