编写可维护的JavaScript

出版社:人民邮电出版社
出版日期:2013-4
ISBN:9787115310088
作者:扎卡斯
页数:226页

章节摘录

版权页:   插图:   方法封装了从DOM中删除一个元素的操作,屏蔽了开发者要访问该元素父节点的需求。 从JavaScript的可维护性而言,门面是非常合适的方式,自己可以完全控制这些接口。你可以允许访问任何底层对象的属性或方法,反之亦然,也就是有效地过滤对该对象的访问。你也可以对已有的方法进行改造,使其更加简单易用(上段示例代码就是一个案例)。底层的对象无论如何改变,只要修改门面,应用程序就能继续正常工作。 门面实现一个特定接口,让一个对象看上去像另一个对象,就称作一个适配器。门面和适配器唯一的不同是前者创建新接口,后者实现已存在的接口。 11.4关于Polyfill的注解 随着 ECMAScript 5和HTML 5的特性开始在各种浏览器中的实现,JavaScript polyfills(也称为 shims)变得流行起来了。一个polyfill是指一种功能的模拟,这些功能在新版本的浏览器中已经有完备定义并原生实现了。例如,ECMAScript 5为数组增加了forEach()函数。该方法可以在ECMAScript 3中模拟,以便在老版本的浏览器中如同新版本一样使用。polyfills的关键是它们模拟的原生功能要以完全兼容的方式来实现。因此在有些浏览器中存在了这些功能,所以有必要检测不同情况下它们的处理是否符合标准的方式。为了达到目的,polyfills经常会给非自己拥有的对象新增一些方法。我不是polyfills的粉丝,不过对于别人使用它们,我表示理解。相比其他的对象修改而言,polyfills是有界限的,是相对安全的。因为原生实现中是存在这些方法并能工作的,有且仅当原生方法不存在时,polyfills才新增这些方法,并且它们和原生版本方法的行为是完全一致的。 polyfills的优点是,当只支持浏览器的原生功能时,它们非常容易删除。如果你选择使用某个polyfill,你自己做好严格审查。要保证它的功能和原生的版本尽可能的近似,多检查一下这种库代码有单元测试并严格验证了这些功能。polyfills的缺点是,它们可能没有精确地实现它们(原生浏览器环境)所缺失的功能,从而给你带来的麻烦比缺失的功能要多得多。

名人推荐

“本书是一本教你写出具有前瞻性的JavaScirpt代码的完全手册,在团队作战中特别有用。”——Ryan Grove,Yahoo! YUI工程师“作者将他十多年工作经验的精华部分浓缩至这本通俗易读的书中。我建议每个开发工程师和在校学生尽早阅读本书。不管你有多少经验,本书中的每一页内容都会让你变得更加优秀且倍受大家欢迎。”——Lea Verou,Web设计师兼Web开发人员“这是一本前端工程师的指南,指明了在编码过程需要注意的方方面面。提高可维护性是一个非常大的话题,而这本书,是一个非常不错的起点。”——王保平(玉伯),支付宝Web前端工程师

内容概要

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

编辑推荐

《编写可维护的JavaScript》中强调:任何语言都需要强调编码风格的一致性。只要是团队开发,每个人都以相同方式编写代码就是至关重要的。这样大家才能方便地互相看懂和维护对方的代码。运用《编写可维护的JavaScript》中讲述的技巧和技术,可以使JavaScript团队编程从侠义的个人偏好的阴霾走出来,走向真正的高可维护性、高效能和高水准。它是一本构建编码风格手册,帮助开发团队从“游击队”走向“正规军”。

作者简介

《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。《编写可维护的JavaScript》内容涵盖了编码风格、编程技巧、自动化、测试等几方面,既包括具体风格和原则的介绍,也包括示例和技巧说明,最后还介绍了如何通过自动化的工具和方法来实现一致的编程风格。
《编写可维护的JavaScript》适合前端开发工程师、JavaScript程序员和学习JavaScript编程的读者阅读,也适合开发团队负责人、项目负责人阅读。


 编写可维护的JavaScript下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计14条)

  •     无论你是在校学生还是前端工程师都不可不阅之书,无论是初学者还是很有经验开发工程师它既能让其基础打得更牢,也能让你更上一层楼!一部构建编码风格手册的经典著作,一部帮助开发团队从“游击队”走向“正规军”的伟大之作,一部错过为之后悔的最新力作!
  •     翻译的挺不错的,我是自己买纸质书的,虽然用了很少时间看完了,但是这本书对于刚刚入门js的童鞋还是不错的,对于规范代码和编写高质量的代码还是特别有建议。但是在生产实践中我还是喜欢用模块的的方式来管理代码,不过这本书里没有提及。是一个遗憾哟。
  •     本书的第二部分是精华。倒没太多新东西,之前的《高性能JS》《JS高级程序设计》以及《JS模式》大部分都提到过,这里算是个总结。让人很不爽的一点是:原书中的“提示建议”,是以“爪印”图标和不同的样式跟正文区分开的;中文版中图标和样式都被干掉了,跟正文混在一起。奇怪的是:前言中“本书约定”里这些图标倒是还在。之前翻过英文版,因此没怎么仔细读。大致发现了一些翻译和排版的问题:p1 第一部分“程序是写给人读的,只是偶尔让计算机执行一下。”原文:“Programs are meant to be read by humans and only incidentally for computers to execute.”应该是:“程序是给人读的,顺带让计算机执行。”————————————————————————p1同上 有些人可能来自某个“皮包公司”,身兼数职,在公司里什么都做;原文:“Some may come from one-man shops where they could do whatever they wanted;”“one-man shops”翻译成“皮包公司”并不合适也算不上幽默;“ dowhatever they wanted”应该是指想怎么编码都可以,“身兼数职,什么都做”这个引申的过头了。——————————————————————————p2“毫无疑问,全球性的大公司都对外对内发布过编程风格文档。”原文:“It’s no wonder that large companies around the world have published style guidelines either internally or publicly.”“no wonder that”应该是“无怪乎,难怪”的意思。——————————————————————————p28开头那几行是注释,排版错误给弄成正文了。——————————————————————————p103最后一段第一句有个错字“恬当”,这个应该用是五笔打出来的。———————————————————————————p135“我相当乐意花一整天的时间通过编程把一个任务实现自动化,除非这个任务手动只需要10秒钟就能完成”原文:“I . . . am rarely happier than when spending an entire day programming my computer to perform automatically a task that would otherwise take me a good ten seconds to do by hand.”这个应该是搞反了,原文意思是说——手动花10秒我都愿意去自动化,而不是——手动只要10秒我就不去自动化了。

精彩短评 (总计66条)

  •     值得学习的一本书,然后你写的代码会比原先漂亮。
  •     买这本书之前,关于翻译质量不佳之类的说法让我犹豫了一段时间。买了后我觉得确实有些地方出现词不达意和错别字的现象,但是这种错误其实并不多,完全在可以接受的范围内。而且译者根据国内的环境,以及国内外文化差异造成的一些进行了特别的解释跟说明,方便理解。再说说书的内容,因为本人一直在web开发,尤其是前端开发方面没有团队,都是通过自己学习、摸索进步的,所以很多设计、处理的方式并不规范,用的都是野路子(hack)。这对日后的调试、二次开发造成了很多不便,也对系统添加了很多隐患。本书非常系统的说明了各种开发中可能碰见的这些问题,并且非常到位的给出了解决思路以及方式方法。这一点对我来说意义非凡,使我提升巨大。所以我推荐所有有js开发基础经验并且希望进一步提高、规范自己开发的朋友入手。如果你是“单打独斗”,会对你日后开发有极大帮助,如果你在一个团队中,或者刚加入一个正规的团队,这本书也可以让你在很短的时间内融入其中
  •     适合初级向中级进阶。书中前两部分都非常不错,值得每一个业余JavaScript程序员学习规范自己的开发。第三部分略有过时,读读也不错。目前用的比较多的应该是Grunt、gulp和webpack这些吧。不过类似的前端工具发展太快了。
  •     自动化部分有点旧了,前两个部分还是有收获的。
  •     前十三章对我帮助很大,之后的章节也不是说帮助不大,最主要是缺少有规范的项目的磨练,光看有点不知所云,mark,等以后回来再翻多几遍吧(唯一觉得不好的事,译者作为业内人士,翻译的质量真的是惨不忍睹,错字多,而且有些地方还翻译错误,毁了一本好书)
  •     除了第二部分编程实践有一些点之前确实没有注意到,我认为第一部分编程风格是开发者最基本的素质并应长期坚持,第三部分自动化因为前端日新月异的工具(坑)层出不穷,其实已经挺old-fashioned了。但书中提到的整个最佳实践和开发流程应被一直遵守。
  •     颇有收获
  •     又是Zakas的书,规范书,看看就好
  •     打基础好书
  •     更多地注重JS的编写风格、命名规范等,收获了诸如nameSpace函数,和一些优秀的编程习惯,比如说从处理程序抽离应用逻辑,以及分离代码的配置数据等等。后面几章讲了已经过时的基于Java是Ant配置工具,现在依然从Grunt变换到Gulp,也提到了CI和Phantom,很有前瞻性呀。总的来说,还是不错,看得很快,适合当做日常读物的补充,没有精读。
  •     很简洁的规范书,看完还是有些启发的,以前都没太多注意,规范起来!!!
  •     不错的书,工作之余看看既不费脑也不费时,对规范化代码风格很有帮助!
  •     好书,值得一读
  •     不错的一本总结js编程规范的书,有一定实践经验后看还是挺有收获的,翻译不至于像某些人评论的那么差,反正我看下来是没有什么理解上的问题的,书里讲自动化的ant工具我直接跳过了,感觉用grunt或者gulp才是主流
  •     适合初学者看
  •     本身作者就是前端的业界大牛,尼古拉斯·扎卡斯 。原来就写过一本非常不错的《JavaScript高级程序设计》。基本上搞前端重构的同学都会去读那本书。这本书也是从作者工作的经验和角度谈自己在团队中的一些JavaScript编码规范,非常具备指导意义。
  •     终于看完了,断断续续读了一年多的书,早点读完就好了,书里基本上把最近才知道的或用过的思想和工具介绍了个遍,是学习JavaScript最佳实践的至少要完整读一遍的好书
  •     很多实用的编程实践,书中很多内容以前也有些接触,感觉工作后领悟更深了
  •     里面讲了一些关于如何编写一个规范的代码,例如,在编写注释的时候都需要空一行,在具有逻辑性代码的地方,如何缩进等等,但里面有一些章节是基本不会用到的
  •     更多的编程理念和方法,需要一定的实践之后做提升用
  •     能让你节省更多的代码阅读时间,多陪陪家人
  •     好书,推荐,在火车上一夜看完的
  •     东西不错, 是正品,对学习帮助比较大
  •     写出容易维护的的代码对于自己和整个项目来说都收益良多,前三分之二内容比较好,提醒到一些平时注意不到的细节,后面关于ant的介绍感觉用不到~
  •     一本巨好的书。可惜最开始没看到,走了好多好多好多弯路。
  •     干货不是很多,没有期望中的那么好,也可能是自己经验不够,没能体悟出里面的精髓
  •     强烈建议leader读一读,越来越觉得大多数时候,代码最重要的是可读性。这本书里面的某些东西,还是很有价值的。
  •     读过 但是基本没什么映像了
  •     初一看原以为书比较薄, 价格略贵. 认真看了一遍之后收获颇丰.
  •     厕所必备读物啊。。。
  •     对于这种标准性差的弱类型语言,标准化规范化是多么的重要,这本书所讲的无疑是最好的编码典范!
  •     很多内容过时了。另外我是支持不加分号的。
  •     13章及以后是项目实践部分的内容,暂时还没接触过。13章之前的内容,也基本上接触过。
  •     这本书前半部分的内容和《JavaScript : The Good Parts》有点重复,都是讲如何正确使用js的特性,而且最好是先读一下《JavaScript : The Good Parts》再读这本书,因为书中有些地方直接引用和提到了前者,可能因为两人都是雅虎的同事吧。后半部分可以很好的帮助自己从无到有建立起自己的js build环境。
  •     编码习惯养成很重要,推荐
  •     交互也存在与程序员之间,他们或许并未谋面。这类交互是用户交互的必然延续。于是作者开篇引言“程序是写给人读得,只是偶尔让计算机执行一下”
  •     前半段挺实用的,后半段很多工具根本不认识,以后用到再翻翻了。
  •     终于读完辣
  •     翻译略有瑕疵。确实一本好书,读着读着就想起之前读的红皮书。
  •     很好的一本书,让自己写代码的思路更加清晰了
  •     中规中矩的书,之前在网络上看到的许多规范着书中都能找到。还行,并不是非常惊艳的一本书
  •     通俗易懂,注意到很多细节,值得一看
  •     前面两部分很棒,第三部分过时了。排版方面有不少瑕疵,感觉很不用心。不过从技能提高的角度来讲,还是强烈推荐阅读。
  •     还没看.扫了一下目录 内容应该不错.应该可以学到东西.
  •     可以了解一下,一些可能被忽略的问题
  •     比较有用的只有第二部分. 第一部分和第三部分直接跳过了. 对于像我这样刚接触比较大的项目的新手, 对写代码还是挺有帮助的.
  •     一直想找不错的js规范书籍,书里介绍的还是挺不错的
  •     适合新手阅读,很多重要的点都点到了!但是并没有给出很好的解决方案。
  •     绝对好书,编码规范很重要
  •     讲的挺系统的,但是有些内容有点过时了,第二部分有亮点
  •     还不错。养成良好的编码规范
  •     野生的前端走向规范,后半部分介绍的工具大多都过时,了解即可
  •     看了以后很有收获,发现了平时在编写代码是自己以为很好,实际上未必的错误编写习惯。
  •     学习js应该都知道这书没的说,确实好,
  •     很多规范看起来简单,真的写的时候要遵守起来还是很难的,得花时间捉摸一下
  •     强推JavaScript高级程序设计一书,作者都是Zakas,这本书更像是高级程序设计的一个小的子集,主要内容是编码规范等,收获不大。
  •     对提升代码质量很有帮助
  •     手边工具书,推荐
  •     好书 中文翻译得很好
  •     前两部分还可以,第三部分太偏工程细节了。 另外勘误较多。。。
  •     还不错,适合初学者规范自己的风格。有些专题没有深入讲解原因和解决方案。
  •     讲得很详细,适合Team Leader看,以便推广
  •     内容偏旧了点,有些说法已经过时了。
  •     介绍了编码规范、自动化等,浏览下就可以了。
  •     还没读完,基本上是zakas那本红宝书的子集,重点是javascript代码风格、规范以及最佳实践。
  •     有助!
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024