跟着月影学JavaScript|青训营笔记

55 阅读2分钟

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

如何写好JS(上)

1、写好JS的一些原则

各司其职:让HTML、CSS和JavaScript职能分离。

  • HTML/CSS/JS各司其责
  • 应当避免不必要的由JS 直接操作样式
  • 可以用 class 来表示状态
  • 纯展示类交互寻求零JS 方案

组件封装:好的UI组件具备正确性、扩展性、复用性。

  • 组件设计的原则: 封装性、正确性、扩展性、复用性。

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

  • 三次重构

    插件化

    模板化

    抽象化 (组件框架)

    补充:组件是指Web贝面上按出来一个个包含版(HTML) 、功能(US) 和样式(CSS) 的单元,好的件具备到装、正璃性、扩额性、复用经。

过程抽象:应用函数式编程思想。

  • 用来处理局部细节控制的一些方法
  • 函数式编程思想的基础应用
高阶函数

Once:为了能够让”只执行一次”的需求覆盖不同的事件处理,我们可以将这个需求剥离出来。这个过程我们称为过程抽象。

function once(fn) {
  return function(...args) (
   if(fn) {
   const ret = fn.apply(this, args);
   fn = null;
    return ret;
     }
   }
}

HOF

  • 以函故作为参数
  • 以通数作为返回值
  • 常用于作为通数装饰番
function HOFO(fn) {
return function( ...args) {
return fn.apply(this, args);
  }
}
编程范式

命令式与声明式

image-20230117160832440.png

let list = [1, 2,3, 4];
let mapl = [];
for(let i = 0; i < list.length; i++){     
    mapl.push(list[i] * 2);
  }
let list = [1, 2, 3, 4];
const double = x = x *2;
list.map(double);

例子

  • Toggle-命令式
  • Toggle-声明式
  • Toggle- 三态

总结

  • 过程抽象/HOF/装饰器
  • 命令式/声明式

如何写好JS(下)

当年的Leftpad事件

事件本身的槽点:

  • NPM 模块粒度
  • 代码风格
  • 代码质量/效率
function leftpad(str, len, ch) {
    str = String(str);
    var i=-1;
    if (!ch && ch !==0) ch = ' ';
    len = len - str.length;
    while (++i < len) {
        str = ch + str;
    }
      return str;
 }

重构一下

  • 代码更简洁
  • 效率提升
function leftpad(str, len, ch){
     str = ""+ str;
     const padLen = len - str.length;
     if(padLen <= 0) {
         return str;
      }
       return (“"+ch).repeat(padLen)+str;
}

总结

JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。