JS代码如何优化 | 青训营笔记

64 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第3天

写好JS的三个原则

各司其职,组件封装,过程抽象

各司其职

让HTML,CSS,JS的代码分离

HTML就专注页面结构,CSS就专注页面样式,JS就专注交互等页面操作

应当避免js直接操作样式

let div = document.querySelector('.oDiv');
            if (div.style.backgroundColor == 'blue') {
                div.style.backgroundColor = 'red';
            } else {
                div.style.backgroundColor = 'blue';
            }
        })

像这样的就不行

可以让js来更改class名进行修改样式

image.png

document.querySelector('.btn').addEventListener('click', function () {
            let div = document.querySelector('#oDiv');

            if (div.className == 'oDiv') {
                div.className = 'oDiv2';
            } else {
                div.className = 'oDiv';
            }
        })

这种方法就很好的避免了js直接操作元素的样式

组件封装

组件是指web页面上抽出来一个个包含模板,功能,样式的单元。好的组件具备封装性,正确性,扩展性,复用性。

比如,如果头部部分需要一个轮播图进行展示,然后底部又需要一个轮播图,这个时候就可以用到组件封装了。避免重复写一个功能点。

组件设计的原则:

  1. 封装性
  2. 正确性
  3. 扩展性
  4. 复用性

实现组件的步骤:

  1. 结构设计
  2. 展示效果
  3. 行为设计

三次重构

  1. 插件化
  2. 模板化
  3. 抽象化(组件框架)

过程抽象

我们想象一个应用场景,就是常见的表单提交,一般我们都应该限制点击提交后不能再次提交,防止多次提交。

为了能够让‘只执行一次’的需求来覆盖不同的事件处理,我们可以将这个需求剥离出来,这个过程也被称为过程抽象。 我们可以创建一个函数,来处理“只执行一次”的这个事件

参考了本片文章juejin.cn/post/700780…

高阶函数

JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

参考www.liaoxuefeng.com/wiki/102291…