试着写好JS代码 | 青训营笔记

57 阅读2分钟

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

编码原则一:各司其责

各司其责,简单来说,就是让HTML、CSS、JS的职能分离。比如想要完成一个深色模式的功能,可以有许多解决办法:

  • 方法一:切换深色模式时,直接使用JS更改具体的样式。
  • 方法二:切换深色模式时,使用JS更改body的类名;使用CSS为设置深色模式对应类名的样式。
  • 方法三:使用复选框,利用CSS选择器更改复选框选中时和未选中时其后元素的样式。

第一种方法在JS逻辑代码里编写样式,一是不利于逻辑代码的阅读,二是后期修改样式时不便于定位样式所在的文件。

第二种方法则利用类名作为逻辑和样式沟通的「桥梁」,通过类名的中转,方便后期代码的维护。

第三种方法更是发挥了CSS选择器的强大特性,不通过JS便实现了功能。但实际业务场景复杂多变,很可能不便于使用纯CSS实现。

「各司其责」原则的践行,虽然会在开发过程中多付出一些努力,但是能极大地方便后期的修改维护,毕竟,「优雅」的代码谁不爱呢?

编码原则二:组件封装

HTML、CSS、JS各司其责固然「优雅」,但组件封装才能帮助你制造网页「大厦」中合格的「砖瓦」。一个好的组件应该具有以下四项「优良品质」:

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

对组件提出的更高要求则是「组件之内,亦有插件」。一个组件,在经历解耦之后,就如同把「砖瓦」换成了「榫卯」。组件之内的各个控制元素摇身一变,成了插件,通过依赖注入的方式,成为一个组件的有机成分,就如同榫与卯之间的融合,使得网页「建筑」更具有技巧性与应变能力。

编码原则三:过程抽象

讲个笑话,问:把大象装进冰箱需要几步?

答:打开冰箱,把大象放进去,关上冰箱。

这就是「过程抽象」,抽象时不必关心实现细节,而是概况出大体框架。对于上面这个笑话,你也许会问「大象从哪来」「为什么要放进冰箱」「冰箱放不下怎么办」,但这些通常不为过程抽象所关注,它只需要抽丝剥茧、总结通用范式即可。这是一种自顶向下的设计手段,是一种分而治之的精明策略,同样有助于提升JS代码的可读性、可扩展性。

这些「Good coder」的「Universal principle」,大可「Give it a try」,毕竟「Time will tell」。