如何写好JavaScript
我们学习了HTML/CSS/JavaScript,离真正的前端工程师还有多远?换一个说法,前端工程师对于JavaScript有什么标准?怎么写JavaScript才是好的代码。
前提:已经对JS的基础(如语法语义)有一定的了解,在这节课里面基本没有讲JS的基础,重点在如何写好JS代码。(不仅限于JS,JavaScript程序员本质上也是程序员,因此这里面有很多相通的东西,有同样的原则、技巧)
推荐资料:犀牛书和红宝书(JavaScript 权威指南和JavaScript 高级程序设计)这两本书都很厚,而且会越来越厚,因为JavaScript会有越来越多的新特性。
写好JavaScript的原则
一 各司其责
什么叫各司其责?就是让HTML/CSS/JS职能分离。
-
HTML/CSS/JS各司其责
-
应当避免不必要的由JS直接操作样式
-
可以用class来表示状态
-
纯展示类交互寻求零JS方案
课程中的例子的简单实现:
情景:一个网页,在很多时候,他提供深色和浅色模式,白天使用浅色模式,晚上使用深色模式,便于用户更好的去阅读。
最容易想到的方式就是使用DOM API获取网页右上角button值,用if判断,如果是深色模式,就把CSS样式改为浅色,如果是浅色模式,就把CSS样式改为深色,同时修改标签内容。
这个版本有什么问题?怎么优化?
新的版本:使用CSS className来判断,切换CSS class即可。这种版本也有助于一个项目,一个团队里面其他程序员看懂代码。
还能优化吗?
白天夜晚阅读模式的切换——零JS方案
涉及到CSS高级功能,使用伪类选择器。
HTML代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="1.css">
</head>
<body>
<input id ="checkBox" type="checkbox">
<div class="content">
<header>
<label id = 'btn' for ="checkBox"></label>
<h1>深夜食堂</h1>
</header>
<main>
<div class = "description">
<p>some....</p>
<p>some....</p>
<p>some....</p>
</div>
</main>
</div>
</body>
</html>
CSS代码
*
{
box-sizing: border-box;
}
body,html
{
width: 100%;
height: 100%;
padding: 0;
margin: 0;
overflow: hidden;
}
.content
{
height: 100%;
padding: 10px;
transition: background-color 1s,color 1s;
}
#checkBox
{
display: none;
}
#checkBox:checked + .content
{
background-color: black;
color: white;
transition: all 1s;
}
#btn
{
float: right;
}
#btn::after
{
content: '☀';
}
#checkBox:checked + .content #btn::after
{
content: '🌙';
}
效果如下
点击☀符号时,页面切换成夜间模式:
点击🌙符号时,页面切换成白天模式:
二 组件封装
什么是组件?组件是指Web页面上抽出来一个个包含模版(HTML)、功能(JS)和样式(CSS)的单元。好的组件具备封装性、正确性、扩展性、复用性。
实现组件的步骤:结构设计、展现效果、行为设计
三次重构:插件化、模板化、抽象化(组件框架)
解耦:将控制元素抽取为插件,插件与组件之间通过依赖注入的方式建立联系
三 过程抽象
-
用来处理局部细节控制的一些方法
-
函数式编程思想的基础应用