JavaScript 编码原则之过程抽象 | 青训营笔记

49 阅读2分钟

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

一、本堂课重点内容

  • JavaScript 好代码的标准
  • HTML/CSS/JS 各司其责
  • 组件的定义解析及特征
  • 组件封装基本方法
  • 利用原生 JS 实现电商网站轮播图
  • 过程抽象概念
  • 高阶函数使用模式
  • JavaScript 编程范式

二、详细知识点介绍

写好JS的原则

  • 各司其责
  • 组件封装
  • 过程抽象

结构: HTML

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

<div id="my-slider" class="slider-list">
    <ul>
        <li class="slider-list_item--selected">
            <img src="https://p5.ssl.qhimg.com/t0119c74624763dd070.png"/>
        </li>
        <li class="slider-list  item">
            <img src="https://p4.ssl.qhimg.com/t0ladbe3351db853eb3.jpg"/>
        </li>
        <li class="slider-list  item">
            <img src="https://p2.sst.qhimg.com/t01645cd5ba0c3b60cb.jpg"/>
        </li>
        <li class="slider-list__item">
            <img src="https://p4.ssl.qhimg.com/t0133lac159b58f5478.jpg"/>
        </li>
    </ul>
</div>

表现: CSS

  • 使用 CSS 绝对定位将图片重叠在同一个位置
  • 轮播图切换的状态使用修饰符 (modifier)
  • 轮播图的切换动画使用 CSS transition
#my-slider{
    position: relative;
    width: 790px;
}
.slider-list ul{
    list-style-type:none;
    position: relative;
    padding: 0;
    margin: 0;
}
.slider-list__item,
.slider-list__item--selected{
    position: absolute;
    transition: opacity ls;
    opacity: 0;text-align: center;
}
.slider-list__item--selected{
    transition: opacity Is ;
    opacity: 1;
}

行为: JS

  • API 设计应保证原子操作,职责单一,满足灵活性

解耦

  • 将控制元素抽取成插件
  • 插件与组件之间通过依赖注入方式建立联系
  • 将HTML模板化,更易于扩展
图片.png 图片.png

抽象

将通用的组件模型抽象出来
图片.png

过程抽象

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

Once

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

高阶函数

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

编程范式

  • 命令式
  • 声明式
图片.png

三、课后个人总结

  • 在定义函数时,要做好封装函数,尽量不要让一个函数直接处理一个外部的变量,最好把这个变量变成一个参数,传递给函数。
  • 写出来的代码最重要的还是要保证正确。在遇到一些比较复杂的情况,要考虑到算法的数学模型,最好能给予证明,保证代码的数理正确性。