如何写好JavaScript | 青训营

59 阅读3分钟

写好JavaScript需要遵循以下原则:

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

一、各司其职

HTML负责去描述网站结构,CSS主要是负责网站的展示表现,JavaScript负责交互内容,所以三者要各司其职。以课堂上讲的例子:深夜食堂。其要求通过控制网页的界面,让它支持浅色和深色两种浏览模式。第一次代码使用了JavaScript去修改了页面的样式,违背了各司其职的原则,导致其全局污染,样式和行为没有分离,即没有做到职责分离,复用性不强,封装性不好。但最后一个版本使用<label><input type="checkbox">标签的特性,使用了checked各司其职的完成了浅色和深色切换的任务。

  1. HTML/CSS/JS各司其职
  2. 应当避免不必要的有JS直接操作样式
  3. 可以用class来表示状态
  4. 纯展示类交互寻求零JS方案

二、组件封装

组件是指Web页面上抽出来一个个包含模板(HTML)、功能(JS)和样式(CSS)的单元。一个好的组件具备封装性、正确性、扩展性、复用性。

基本方法:

1.结构设计:HTML

通过良好的结构设计,可以提高组件的可扩展性和可维护性。其中轮播图是一个典型的列表结构,可以使用无序列表<ul>来实现.

2.展现效果:CSS

  • 使用CSS绝对定位将图片重叠在同一个位置
  • 轮播图切换的状态使用修饰符(modifier)
  • 轮播图的切换动画使用CSS transition

3.行为设计:控制流(Event),功能(API)

通过提供良好的 API 接口,使得其易于集成和扩展。控制流通过监听和处理事件,可以让组件具备交互能力。

解耦:

  • 将控制元素抽取成插件
  • 插件与组件之间通过依赖注入方式建立联系
  • 将HTML模板化,更易于扩展

三次重构:

  • 插件化
  • 模板化
  • 抽象化

三、过程抽象

用来处理局部细节控制的一些方法,函数是编程思想的基础应用,为了能够让“只执行一次”的需求覆盖不同的事件处理,我们将这个需求剥离处理。这个过程我们称为过程抽象。

高阶函数:一个函数就可以接收另一个函数作为参数,简言之,函数的参数能够接收别的函数,这种函数就称之为高阶函数常见的高阶函数有:Map、Reduce、Filter、 Sort。高阶函数是至少满足以下条件之一的函数:

  • 函数可以作为参数传递
  • 函数可以作为返回值输出

高阶函数实现AOP: AOP是Java Spring架构的核心。AOP的主要作用就是把一些和核心业务逻辑模块无关的功能抽取出来,然后再通过“动态织入”的方式掺到业务模块中。

总结

这节课总体分为三部分:各司其职,组件封装,过程抽象。但每部分知识较多较杂,一时间无法全部接收,还需多多理解学习,深入了解,梳理脉络,理清其中关系才能更好的写好JavaScript。