凤凰山笔记

编写可维护的JavaScript_读书总结

这段时间断断续续的在看这本书,总结一下读书心得。

这本书主要讲了什么?

1、编程风格。介绍了JavaScript中流行的几种编程风格。
2、编程实践。在实际运用当中,写JavaScript程序需要注意的一些tips,哪些东西应该用,哪些不应该用,如何使用。
3、自动化。介绍了写JavaScript程序用到的一些工具,比如说合并、压缩、检查等工具。

为什么要讲编程风格?

每个人都有自己的编程风格,比如说,html代码缩进,有人喜欢用两个空格,有人喜欢用四个空格。在团队开发中,当我们打开一个别人写的文件的时候,常常不是立即工作,而是首先修复代码缩进。当代码很多文件很大的时候,你会体会到统一编程风格的确会节省大量的时间。
还有就是,当代码风格统一的时候,能更容易的看出问题,比如html少了一个闭合标签。

编程实践讲了什么?

说起编程风格,不得不提编程规范了。编程规范包含了编程风格、编程最佳实践、文件和目录的规划等等。这本书主要讲的就是JavaScript的编程规范。
编程规范对团队开发来说非常重要。统一编程规范节约了大量的后期维护时间,因为所有代码看起来写得就像是一个人写得一样。
这本书的第二部分就是讲了编程规范中一些编程的最佳实践。比如说:UI层的松耦合、避免使用全局变量、避免”空比较“等等。

自动化这部分讲了什么?

这个部分主要介绍了前端开发JavaScript用到工具。JavaScript合并压缩工具等等。
如果对于这些前端工具感兴趣,可以看一下慕课网的视频。Grunt-beginner前端自动化工具

能从这本书学到的东西:

避免使用全局变量。
在我们写的前端页面中,有许多全局变量。这么多全局变量是不提倡的。这本书给了一个解决方法就是:使用全局对象,把原来的全局变量当成属性放到全局对象里面去。这样就一个全局变量。容易控制。以后添加业务控制代码,直接添加属性就行。
UI松耦合。
一个UI界面由HTML、 CSS 和JavaScript三大部分组成。这三大部分耦合程度越低,代码的可维护性就会越高,同样出Bug的几率就越低。下面举例介绍一下如何实现松耦合。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
将JavaScript从CSS中分离。
/*不好的写法*/
.box {
width: expression(document.body.offsetWidth + "px");
}
将CSS从JavaScript中分离。
/*不好的写法*/
element.style.color = "red";
element.style.left = "10px";
element.style.top = "100px";
element.style.visibility = "visible";
我们需要这样分离:
/*好的写法*/
.reveal {
color: red;
left: 10px;
top: 100px;
visibility: visible;
}
/*好的写法*/
//原生写法
element.className += " reveal";
//HTML5
element.classList.add("reveal");
//jQuery
$(element).addClass("reveal");
将JavaScript从HTML中抽离
/*不好的写法*/
<button onclick="doSomething()" id="action-btn">Click Me</button>
/*好的写法*/
//原生JavaScript方法
document.getElementById("action-btn").onclick = function () {
//codes
};
//jQuery
$("#action-btn").on('Click', function () {
//codes
});
将HTML代码从JavaScript中抽离
/*不好的写法*/
var div = document.getElementById("my-div");
div.innerHTML = "<h3>Error</h3><p>Invalid e-mail address.</p>";
好的写法就是利用JS模板。
对于小html代码片段,直接拼字符串就可以;对于大段的html代码段,用模板比较好一些。

总结:

虽然这本书很薄,200多页,但是里面讲的内容很重要,可以作为提高JavaScript程序可维护性的一个起点。

一些编码规范

Baidu EFE team HTML编码规范
Baidu EFE team CSS编码规范
Baidu EFE team JavaScript编码规范
GitHub 编码规范

cloudroc wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
很惭愧,只做了些微小的工作,您的支持将鼓励我继续努力创作!