学习笔记4-如何写好JS | 青训营

66 阅读2分钟

这节课是青训营前端基础班的第四节课,看了将近两个小时终于把4个视频看完了T-T,下面是我的笔记

三个原则

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

各司其责

例子1 深夜食堂

定义、读取button。当点击太阳图标时转换为黑夜模式;点击月亮图标时转换为白天模式。

image.png

image.png

思考

版本有什么问题?如何优化?

第一个版本在JS里用了css的样式,不符合我们各司其责的原则。

第二个版本多出了过度动画,可以避免短时间色彩变化过大而引起的对用户视觉的刺激。

部分小结

HTML/CSS/JS各司其责

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

可以用class来表示状态(如上面的例子)

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

组件封装

例子2 轮播图

  • 第一步 构建结构

用HTML来实现。轮播图是典型的列表结构,使用无序列表ul元素来实现。

  • 第二步 展现效果

使用css绝对定位(position:absolute)将图片重叠在同一位置,轮播图切换状态使用修饰符,轮播图的切换动画使用css transition。

  • 第三步 行为设计

使用自定义事件来解耦

image.png

思考

问题:修改麻烦

改进:解耦。将控制元素抽取承插件,通过依赖注入来构建联系。

问题:不易于扩展

改进:将HTML模板化

部分小结

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

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

三次重构:插件化、模板化、抽象化

过程抽象

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

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

 

高阶函数

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

image.png

image.png

思考

为什么要用高阶函数?

  • 纯函数,结果固定,可预期,没有副作用

  • 非纯函数,可维护性越差

高阶函数可以大大减少使用非纯函数的可能性

个人的思考

在这节课中我学习到了一些新的词汇、概念,如高阶函数、纯函数、解耦等,这在我学习编程的道路上是迈出了一小步,同时,我也从课程中学习到一些实践中会遇到的问题以及如何解决问题,如何比较两段代码的区别和优缺点。