前端 | 青训营笔记

64 阅读3分钟

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

学习使我快乐.jpeg

首先,老师通过一个夜晚食堂的例子让我们充分了解到JavaScript 编码原则之各司其责。

主要内容

  • JavaScript 好代码的标准
  • HTML/CSS/JS 各司其责

好书推荐

例书推荐.png

写好JS的一些原则

  • 各司其职:让html、css、javascript职能分离
  • 组件封装:好的ui组件具备正确性、扩展性、复用性
  • 过程抽象:应用函数式编程思想

第一个版本的代码:

它用javascript去控制了css的样式并不好,结构表现行为,应该做到分离。 image.png 第二个版本的代码:

利用状态性的伪类去控制,用点击去实现样式的切换,本质还是对css的控制,但我们可以直接利用css代码去实现。 image.png 第三个版本的代码: 直接利用css去实现了这个功能,达到了各司其职的效果。 image.pngimage.png

由此,我们可以得出结论:

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

接着我们学习了JavaScript 编码原则之组件封装,我没有听的很懂,很迷糊。

主要内容

  • 组件的定义解析及特征
  • 组件封装基本方法
  • 利用原生 JS 实现电商网站轮播图

组件的定义解析及特征

定义:组件是指Web页面上抽出来一个个包含模板HTML、功能JS、以及样式CSS的单元。 特征:

  • 封装性
  • 正确性
  • 扩展性
  • 复用性

结构设计:HTML

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

展现效果:CSS

image.png
  • 使用CSS绝对定位将图片重叠在同一个位置
  • 轮播图切换的状态使用修饰符modifier
  • 轮播图的切换动画使用CSStransition

行为设计:API

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

  • image.png

但仅仅这样并不灵活,我们需要进行重构

  1. 重构:插件化
  2. 重构:模板化
  3. 重构:组件框架

插件化: 解耦

  • 将控制元素抽取成插件
  • 插件与组件之间通过依赖注入方式建立联系

模板化: 将HTML模板化,更易于扩展。

组件框架: 将通用的组件模型抽象出来。

总结

image.png

接着,继续学习了JavaScript 编码原则之过程抽象。

主要内容

  • 过程抽象概念
  • 高阶函数使用模式
  • JavaScript 编程范式

什么是过程抽象?

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

常用的一些高阶函数:

HOF:

  1. 以函数作为参数
  2. 以函数作为返回值
  3. 常用于作为函数装饰器
  • Once
    为了能够让“只执行一次”的需求覆盖不同的事件处理,我们可以将这个需求剥离出来,这个过程我们称之为过程抽象。例如:开门等等
  • Throttle
    节流函数,节省性能开销,降低频率触发。
  • Debounce
    在节流函数的基础上,一个“防抖”函数。可以用于鼠标跟随等等。
  • Consumer/2
    实现延时调用,设置时间等等。
  • iterative
    一个可迭代方法,我们可以用这个高阶函数实现循环。

使用高阶函数可以提升可维护性,灵活性也更高,大大减少了我们使用非纯函数的可能性。

编程范式

Javascript作为现代编程式语言,既可以有命令式也可以有声明式。 image.png 命令式更强调我们去怎么做,声明式强调是什么会更简单与简洁,也会更方便。

d7bd2fc23a194c738ef9c7e2e089766b.jpeg

学习完这些之后对JavaScript有了一些了解,增加了我对学习JavaScript的热情。 加油!拒绝摆烂!让我们不负青春!在青训营度过充实的一天!