JavaScript的学习 | 青训营

51 阅读2分钟

 一. 如何写好JS

  1. 各司其责
  2. 组件封装
  3. 过程抽象

各司其责

结论:

HTML、CSS、JS各司其职

应当避免不必要的由JS直接操作样式

可以用class来表示状态

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

组件封装

组件是指web页面上抽出来一个个包含模版(HTML)、功能(JS)和样式(CSS)的单元。

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

 

例子:

用原生JS写一个电商网站的轮播图。

结构:HTML

轮播图是一个典型的列表结构,我们可以使用无序列表

    元素来实现。

    image.png  

    表现:CSS

    使用CSS绝对定位将图片重叠在同一个位置

    轮播图切换的状态使用修饰符(modifier)

    轮播图的切换动画使用CSS transition

    image.png  

    行为:JS

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

    image.png

     

    image.png

     

    行为:控制流

    使用自定义事件来解耦。

    image.png

     

    image.png

    轮播图总结:基本方法

    结构设计

    展示效果

    行为设计:API(功能) Event(控制流)

     

    解耦:

    将控制元素抽取成插件

    插件与组件之间通过依赖注入方式建立联系

    image.png

     

    将HTML模板化,更易于扩展

     

    image.png  

    抽象:

    将通用的组件模型抽象出来

    image.png

     

    组件封装总结:

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

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

    三次重构:插件化、模板化、抽象化(组件框架)

     

    过程抽象

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

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

    操作次数限制

    一些异步交互

    一次性的http请求

    image.png

     

    Once

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

    image.png

     

    高阶函数

    以函数作为参数

    以函数作为返回值

    常用于作为函数装饰器

    image.png