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

55 阅读2分钟

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

JavaScript 编码原则之各司其责

1. JavaScript 好代码的标准

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

例子: 深夜食堂

版本一

image.png

版本二(真正符合JavaScript编码原则)

image.png

版本三(纯CSS样式改变)

image.png

for属性规定label与哪个表单元素绑定。在点击label 时,会自动将焦点移动到绑定的元素上,比如使用 checkbox或者radio时,如果没有绑定的话,需要鼠标点中小方框才可以选中或不选, 绑定以后点击 label就可以改变checkbox 的值了,用户使用起来就比较方便。

JavaScript编码原则之组件封装

例子:实现轮播图

结构(HTML):轮播图是一个典型的列表结构,我们可以使用无序列表ul元素来实现。

image.png

表现(CSS):使用CSS绝对定位将图片重叠在同一个位置;轮播图切换的状态使用修饰符 modifier ;轮播图的切换动画使用CSS transition

image.png

行为(JS):API

  • Slider
    • +getSelectedItem()
    • +getSelectItemIndex()
    • +slideTo()
    • +slideNext()
    • +slidePrevious()
  • 控制流,使用自定义事件来解耦

image.png

image.png

image.png

组件封装

组件是指Web页面上抽出来一个个包含模版(HTML)、功能(JS)和样式(CSS)的单元。好的组件具备封装性、正确性、扩展性、复用性。

基本方法

  • 结构设计
  • 展现效果
  • 行为设计 :API(功能)Event(控制流)

重构:模块化

解耦

将HTML模板化,更易于扩展

组件化总结

  • 组件设计的原则:封装性、正确性、扩展性、复用性
  • 实现组件的步骤:结构设计、展现效果、行为设计
  • 三次重构:插件化、模板化、抽象化(组件框架)

JavaScript 编码原则之过程抽象

过程抽象

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

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

高价函数

  • 以函数作为参数
  • 以函数作为返回值
  • 常用于作为函数装饰器

常见的高阶函数

  • Once 只执行一次
  • Throttle 节流
  • Debounce 防抖
  • Consumer/2 延时
  • Iterative 遍历

编程范式

  • 命令式

image.png

  • 声明式

image.png

Leftpad 事故背景引入

事件本身的槽点:

  • NPM模块粒度
  • 代码风格
  • 代码质量/效率

image.png

image.png

  • 代码更简洁
  • 效率提升
  • 性能更好

JavaScript代码质量优化之路

运行好算法思维和数学思维来编写优雅代码。