跟着月影学javascript 青训营笔记

61 阅读2分钟

这是我参与第五届青训营伴学笔记的第三天

如何写好javascript

犀牛书,the good parts

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

各司其职

html css js 各司其职

不要用js去代替css使用,css不要执行js的功能

样式可以直接使用css实现,js只执行行为

要避免不必要的由js直接操作样式

可以用class来表示状态

纯展示类交互寻求零js方案

组件封装

组件设计的原理:封装性 正确性 扩展性 复用性

实现组件的步骤:结构设计 展现效果 行为设计

三次重构

插件化 模板化 抽象化(组件框架)

过程抽象

用来处理局部细节控制的一些方法

函数式编程思想的基础应用

高阶函数

once 使事件处理只调用一次,就把需求剥离出来 这个过程称为过程抽象

HOF

以函数作为参数

以函数作为返回值

常用于作为函数装饰器

        return function(...args){
            return fn.apply(this,args);
        }//函数装饰器
       }
常用的高阶函数

once

Throttle 截留函数

Debounce 防抖函数

Consumer/2 延时调用

literative

为什么使用高阶函数

纯函数行为可预期,输入什么就一定得到什么,无论调用多少次都是同一个结果

function add(x,y){
let sum =x+y;
retun sum;
}
add(3,5);

非纯函数,调用次数不同,结果不同

function count(socres){
socres++;
}
count++;

提高库的可维护性

当我们使用高阶函数时,就可以预测输入的结果

编程范式

声明式的编程方法更加具有可拓展性

声明一个高阶函数,然后调用它

命令式会更为复杂一点

leftpad事件因为应用场景多突然被下架,导致很多库不能使用 写代码应该关注什么

从使用场景去观察

代码质量优化

交通灯状态切换

红包

算法很重要