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

44 阅读2分钟

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

怎么写好JS

各司其职  HTML、CSS、JavaScript职能分离
组件封装 好的UI组件具有正确性、扩展性、复用性
过程抽象 应用函数式编程思想
应当避免不必要的由JS直接操作样式,可以用class表示状态,纯展示类交互寻求零JS方案。

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

结构: HTML  轮播图是一个典型的列表结构我们可以使用无序列表<ul>元素来实现。
表现: CSS  使用 CSS 绝对定位将图片重叠在同一个位置,
      轮播图切换的状态使用修饰符,轮播图的切换动画使用 CSS transition。
行为:JS  API 设计应保证原子操作,职责单一,满足灵活性。
行为:控制流  使用自定义事件解耦
解耦:将控制元素抽取成插件插件与组件之间通过依赖注入方式建立联系,
      将HTML模板化,更易于扩展。

总结

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

高阶函数

JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

常用高阶函数:Once、Throttle(节流函数)、Debounce(节流函数)、Consumer(异步消耗)、Iterative(迭代函数)

为什么要用高阶函数?

函数可以分为

  • 纯函数:当一个function,输入的值确定了,输出的值是唯一确定的,那么这样的一个函数就是纯函数
  • 非纯函数:一个项目、系统或库,理论上来说纯函数越多,可维护性越好。(存函数也便于编写单元测试)