内容简介
本书以网站重构为楔子,深刻而直接地指出了Web前端开发中存在的重要问题—代码难以维护。如何才能提高代码的可维护性?人是最关键的因素!于是本书紧接着全方位地解析了作为一名合格的前端开发工程师应该掌握的技能和承担的职责,这对刚加入前端开发这一行的读者来说有很大的指导意义。同时,还解读了制定规范和团队合作的重要性。
本书的核心内容是围绕Web前端开发的三大技术要素——HTML、CSS和JavaScript来深入地探讨编写高质量的HTML代码、CSS代码和JavaScript代码的方法、技巧、规范和最佳实践,从而为编写易于维护的Web前端代码打下坚实的基础。这不是一本单纯的“技术”书籍,没有系统地讲解Web前端开发的基础知识,它更专注于“技巧”,探索如何为“技术”提供最佳“技巧”。
本书包含了大量的开发思想和原则,都是作者在长期开发实践中积累下来的经验和心得,不同水平的Web前端开发者都会从中获得启发。尤其是对于那些中初级水平的读者而言,本书是一本不可多得的内功修炼秘籍。
目录
- 推荐序
- 赞誉
- 前言
- 致谢
- 第1章从网站重构说起/1
- 1.1糟糕的页面实现,头疼的维护工作/2
- 1.2Web标准—结构、样式和行为的分离/4
- 1.3前端的现状/6
- 1.4打造高品质的前端代码,提高代码的可维护性—精简、重用、有序/8
- 第2章团队合作/9
- 2.1揭秘前端开发工程师/10
- 2.2欲精一行,必先通十行/13
- 2.3增加代码可读性—注释/15
- 2.4提高重用性—公共组件和私有组件的维护/15
- 2.5冗余和精简的矛盾—选择集中还是选择分散/16
- 2.6磨刀不误砍柴工—前期的构思很重要/17
- 2.7制订规范/18
- 2.8团队合作的最大难度不是技术,是人/18
- 第3章高质量的HTML/19
- 3.1标签的语义/20
- 3.2为什么要使用语义化标签/21
- 3.3如何确定你的标签是否语义良好/26
- 3.4常见模块你真的很了解吗/36
- 3.4.1标题和内容/36
- 3.4.2表单/38
- 3.4.3表格/40
- 3.4.4语义化标签应注意的一些其他问题/43
- 第4章高质量的CSS/44
- 4.1怪异模式和DTD/45
- 4.2如何组织CSS/46
- 4.3推荐的base.css/49
- 4.4模块化CSS—在CSS中引入面向对象编程思想/55
- 4.4.1如何划分模块—单一职责/55
- 4.4.2CSS的命名—命名空间的概念/60
- 4.4.3挂多个class还是新建class—多用组合,少用继承/66
- 4.4.4如何处理上下margin/72
- 4.5低权重原则—避免滥用子选择器/81
- 4.6CSSsprite/85
- 4.7CSS的常见问题/88
- 4.7.1CSS的编码风格/88
- 4.7.2id和class/89
- 4.7.3CSShack/89
- 4.7.4解决超链接访问后hover样式不出现的问题/93
- 4.7.5hasLayout/94
- 4.7.6块级元素和行内元素的区别/95
- 4.7.7display:inline-block和hasLayout/97
- 4.7.8relative、absolute和float/103
- 4.7.9居中/104
- 4.7.10网格布局/112
- 4.7.11z-index的相关问题以及Flash和IE6下的select元素/122
- 4.7.12插入png图片/129
- 4.7.13多版本IE并存方案—CSS的调试利器IETester/131
- 第5章高质量的JavaScript/133
- 5.1养成良好的编程习惯/134
- 5.1.1团队合作—如何避免JS冲突/134
- 5.1.2给程序一个统一的入口—window.onload和DOMReady/148
- 5.1.3CSS放在页头,JavaScript放在页尾/159
- 5.1.4引入编译的概念—文件压缩/160
- 5.2JavaScript的分层概念和JavaScript库/162
- 5.2.1JavaScript如何分层/162
- 5.2.2base层/163
- 5.2.3common层/181
- 5.2.4page层/184
- 5.2.5JavaScript库/185
- 5.3编程实用技巧/187
- 5.3.1弹性/187
- 5.3.2getElementById、getElementsByTagName和getElements-
- ByClassName/193
- 5.3.3可复用性/196
- 5.3.4避免产生副作用/199
- 5.3.5通过传参实现定制/203
- 5.3.6控制this关键字的指向/207
- 5.3.7预留回调接口/211
- 5.3.8编程中的DRY规则/212
- 5.3.9用hash对象传参/215
- 5.4面向对象编程/217
- 5.4.1面向过程编程和面向对象编程/217
- 5.4.2JavaScript的面向对象编程/224
- 5.4.3用面向对象方式重写代码/245
- 5.5其他问题/251
- 5.5.1prototype和内置类/251
- 5.5.2标签的自定义属性/255
- 5.5.3标签的内联事件和event对象/260
- 5.5.4利用事件冒泡机制/263
- 5.5.5改变DOM样式的三种方式/267
- 附录A写在规则前面的话/271
- 附录B命名规则/272
- 附录C分工安排/274
- 附录D注释规则/276
- 附录EHTML规范/278
- 附录FCSS规范/280
- 附录GJavaScript规范/282