Javascript正确用法 | 青训营笔记

82 阅读2分钟

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

今天学习的如何学好Javascript

主要是学习了一些编码原则Left-pad事件,编码操作规范,最后再给js代码讲解了优化

与css和html不同,js的使用更加灵活与巧妙,所以要有原则与经验的介入,更偏向于很多编程语言,所以难度有所提升,需要用心学习。

原则:

  • 各司其职(让Html,Css,Javascript职能分离)
  • 组件分装(好的UI组件具备正确性·扩展性,复用性)
  • 过程抽象(应用函数式编程思想)

实例一:实现页面切换的优化

最基础写法:就是鼠标点到图标就判断是什么然后切换图标和背景,比较简单

进阶:直接操作CSS简化操作(改变class名),实现了CSS和js的分离

进一步优化:不使用js,通过css的伪类选择器来实现页面选择

实例二:用js实现电商网站的轮播图

js方面使用的是API

  • Slide
  • +getSelectedltem
  • +getSekectedltemlndex()
  • +slideTo()
  • +slideNext()
  • +slidePrevious()

行为:控制流(用自定义事件解锁控制流)

重构:插件化

解耦

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

总结

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

过程抽象

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

高阶函数

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

常用

  • Once
  • Throttle
  • Debounce
  • Consumer/2
  • Iterative

编程范式

命令式与声明式

bijiii.png 总结

  • 过程抽象/HOF/装饰器
  • 命令式/声明式

Left-pad 事件

缺点:

  • NPM模块粒度
  • 代码风格
  • 代码质量/效率

后续改进

bijjjjjj.png

代码实践1-交通灯

版本一 SetTimeout直接处理

版本二 数据抽象

版本三 过程抽象

版本四 异步加函数式

判断4的幂

洗牌算法

分红包

1.切西瓜法

2.抽牌法