扎卡斯《编写可维护的JavaScript》

扎卡斯《编写可维护的JavaScript》

作者:扎卡斯

出版社:人民邮电出版社

出版年:2013-4

评分:8.2

ISBN:9787115310088

所属分类:网络科技

书刊介绍

内容简介

Nicholas C. Zakas是一名前端开发顾问、作者和演讲家。在Yahoo!供职超过5年时间,在这期间他曾是Yahoo!首页首席前端工程师和YUI库代码贡献者。他著有《JavaScript高级程序设计》、《Ajax高级程序设计》和《高性能JavaScript》等书籍。Zakas倡导了很多最佳实践,包括渐进增强、可访问性、性能、扩展性和可维护性等。他的博客地址是:http://www.nczonline.net/。他的Twitter是:@slicknet。

李晶,花名拔赤,淘宝前端工程师,具有多年前端开发经验,在团队协作、组件开发、移动Web App等方面有深入研究,曾经参与淘宝首页、KISSY等项目开发。他翻译过《JavaScript Web富应用开发》、《JavaScript权威指南(第六版)》、《What is Node?》等书籍,热爱分享,喜欢折腾。微博http://weibo.com/jayli。

郭凯,花名流火,淘宝前端工程师,喜欢登山,也喜欢夜深人静时一人静静地写代码,折腾过许多小站均未能持久,有In、Juicer等开源项目。钟爱JavaScript,也喜欢Python,自嘲所学杂而不精。博客http://benben.cc。

张散集,花名一舟,淘宝前端工程师。他主要从事技术管理,负责淘宝网(北京)的新业务技术和前端团队,热爱前端新技术的推广与应用。翻译作品有《JavaScript Web富应用开发》和《JavaScript权威指南(第六版)》。

作品目录

目录

第一部分 编程风格 1

第1章 基本的格式化 4

1.1 缩进层级 4

1.2 语句结尾 7

1.3 行的长度 8

1.4 换行 9

1.5 空行 10

1.6 命名 11

1.6.1 变量和函数 12

1.6.2 常量 13

1.6.3 构造函数 14

1.7 直接量 15

1.7.1 字符串 15

1.7.2 数字 16

1.7.3 null 17

1.7.4 undefined 18

1.7.5 对象直接量 19

1.7.6 数组直接量 20

第2章 注释 21

2.1 单行注释 21

2.2 多行注释 23

2.3 使用注释 24

2.3.1 难于理解的代码 25

2.3.2 可能被误认为错误的代码 26

2.3.3 浏览器特性hack 26

2.4 文档注释 27

第3章 语句和表达式 30

3.1 花括号的对齐方式 31

3.2 块语句间隔 32

3.3 switch语句 33

3.3.1 缩进 33

3.3.2 case语句的“连续执行” 35

3.3.3 default 36

3.4 with语句 37

3.5 for循环 37

3.6 for-in循环 39

第4章 变量、函数和运算符 41

4.1 变量声明 41

4.2 函数声明 44

4.3 函数调用间隔 45

4.4 立即调用的函数 46

4.5 严格模式 47

4.6 相等 49

4.6.1 eval() 51

4.6.2 原始包装类型 52

第二部分 编程实践 54

第5章 UI层的松耦合 55

5.1 什么是松耦合 56

5.2 将JavaScript从CSS中抽离 57

5.3 将CSS从JavaScript中抽离 58

5.4 将JavaScript从HTML中抽离 60

5.5 将HTML从JavaScript中抽离 62

5.5.1 方法1:从服务器加载 63

5.5.2 方法2:简单客户端模板 64

5.5.3 方法3:复杂客户端模板 67

第6章 避免使用全局变量 70

6.1 全局变量带来的问题 70

6.1.1 命名冲突 71

6.1.2 代码的脆弱性 71

6.1.3 难以测试 72

6.2 意外的全局变量 72

避免意外的全局变量 73

6.3 单全局变量方式 74

6.3.1 命名空间 76

6.3.2 模块 78

6.4 零全局变量 81

第7章 事件处理 83

7.1 典型用法 83

7.2 规则1:隔离应用逻辑 84

7.3 规则2:不要分发事件对象 85

第8章 避免“空比较” 88

8.1 检测原始值 88

8.2 检测引用值 90

8.2.1 检测函数 92

8.2.2 检测数组 94

8.3 检测属性 95

第9章 将配置数据从代码中分离出来 98

9.1 什么是配置数据 98

9.2 抽离配置数据 99

9.3 保存配置数据 100

第10章 抛出自定义错误 103

10.1 错误的本质 103

10.2 在JavaScript中抛出错误 104

10.3 抛出错误的好处 105

10.4 何时抛出错误 106

10.5 try-catch语句 107

10.6 错误类型 109

第11章 不是你的对象不要动 112

11.1 什么是你的 112

11.2 原则 113

11.2.1 不覆盖方法 113

11.2.2 不新增方法 114

11.2.3 不删除方法 116

11.3 更好的途径 117

11.3.1 基于对象的继承 118

11.3.2 基于类型的继承 119

11.3.3 门面模式 120

11.4 关于Polyfill的注解 121

11.5 阻止修改 122

第12章 浏览器嗅探 125

12.1 User-Agent检测 125

12.2 特性检测 127

12.3 避免特性推断 129

12.4 避免浏览器推断 130

12.5 应当如何取舍 134

第三部分 自动化 135

第13章 文件和目录结构 137

13.1 最佳实践 137

13.2 基本结构 138

第14章 Ant 143

14.1 安装 143

14.2 配置文件 143

14.3 执行构建 145

14.4 目标操作的依赖 145

14.5 属性 146

14.6 Buildr项目 148

第15章 校验 149

15.1 查找文件 149

15.2 任务 150

15.3 增强的目标操作 152

15.4 其他方面的改进 153

15.5 Buildr任务 154

第16章 文件合并和加工 156

16.1 任务 156

16.2 行尾结束符 157

16.3 文件头和文件尾 158

16.4 加工文件 159

第17章 文件精简和压缩 163

17.1 文件精简 163

17.1.1 使用YUI Compressor精简代码 165

17.1.2 用Closure Compiler精简 167

17.1.3 使用UglifyJS精简 169

17.2 压缩 170

17.2.1 运行时压缩 171

17.2.2 构建时压缩 171

第18章 文档化 175

18.1 JSDoc Toolkit 175

18.2 YUI Doc 177

第19章 自动化测试 180

19.1 YUI Test Selenium引擎 180

19.1.1 配置一台Selenium服务器 181

19.1.2 配置YUI Test Selenium引擎 181

19.1.3 使用YUI Test Selenium引擎 181

19.1.4 Ant的配置写法 183

19.2 Yeti 184

19.3 PhantomJS 186

19.3.1 安装及使用 186

19.3.2 Ant的配置写法 187

19.4 JsTestDriver 188

19.4.1 安装及使用 188

19.4.2 Ant的配置写法 189

第20章 组装到一起 191

20.1 被忽略的细节 191

20.2 编制打包计划 192

20.2.1 开发版本的构建 193

20.2.2 集成版本的构建 194

20.2.3 发布版本的构建 195

20.3 使用CI系统 196

20.3.1 Jenkins 196

20.3.2 其他CI系统 199

附录A JavaScript编码风格指南 200

附录B JavaScript工具集 223

相关推荐

微信二维码