这是我参与「第五届青训营 」笔记创作活动的第2天
JS编码原则
各司其职
HTML 负责结构,CSS 负责表现,JS 负责行为。
结构,表现,行为分离,是前端工程师的基本原则。
尽量不要通过 JS 去修改 CSS 属性,最好的方式是样式修改的操作通过 CSS 本身实现。
月影老师举了一个简单的例子,一个昼夜模式切换的按钮的实现:
首先最简单的就是按钮绑定点击事件,修改背景颜色与文字颜色属性与按钮图标,但这与我们的设计原则有了冲突,几应当尽量实现样式与行为分离。
这时我们尝试进行优化,我们添加一个 night 类表示夜间模式的样式,点击事件仅修改body元素的样式类,这样的方式,将类作为一种状态,通过 JS 修改页面状态,是一个不错的思路。
而更好更彻底的做法呢,则是利 CSS 本身的伪类checked与兄弟选择器去修改CSS属性,将样式与行为彻底分离,实现了零JS实现。这种思维方式值得学习。
组件封装
组件时指从 web 页面上抽离出的一个个包含模板,样式,行为的单元。
好的组件应当具有封装性,正确性,扩展性,复用性。
基本设计方法
-
结构设计
-
展示效果
-
行为设计
- API(功能)
-
event(控制流)
- 自定义事件
- 解耦
插件化
- 将控制元素抽离为插件
- 插件与组件之间通过依赖注入的方式建立联系
模板化
- 将HTML模板化,更易于扩展
抽象化
- 将组件通用模型抽象出来
过程抽象
- 用来处理局部细节的一些方法
- 函数式编程思想的初步应用
高阶函数
- 以函数为参数
- 以函数为返回值
- 常用作函数装饰器
常见的有防抖函数,节流函数。