这是我参与第五届青训营伴学笔记的第三天
如何写好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事件因为应用场景多突然被下架,导致很多库不能使用 写代码应该关注什么
从使用场景去观察
代码质量优化
交通灯状态切换
红包
算法很重要