这是我参与「第四届青训营 」笔记创作活动的第1天。 如何写好JavaScript
一:各司其责
让html(结构模板)、css(表现样式)、和js(功能)分离,使每一个部分都有自己的作用。
应当避免不必要的由js直接操作样式。
使用class来表示状态。
纯展示类交互寻求零js方案。
二:组件封装
ui组件需要有封装性、正确性、扩展性、复用性,使代码通用性增强。
基本方法:1.用html做结构的设计。2.用css展现效果。3.使用js进行行为设计,要包括API(功能)和Event(控制流)。
重构:插件化(使之更加灵活):解耦:将控制元素抽取成插件,插件与组件之间通过依赖注入方式建立联系。
模板化,更易于扩展。(这样HTML的代码就减少了,使用增删改的时候,只用改变js的代码,不同全部部分都要去修改代码。HTML和css都是可以进行模板化)
抽象化:将组件通用模型抽象出来。
(各司其责和抽象化并不冲突,因为一个是要分开每个部分的功能,一个是使代码更改更加方便。)
三:过程抽象
用来处理局部细节控制的一些方法。
函数式编程思想的基础应用。
操作次数限制:一些异步交互,一次性的HTTP请求(按照要求运行时的错误减少)
高阶函数(是纯函数):HOF:以函数作为参数,以函数作为返回值,常用于作为函数装饰器。
Once:为了能够让“只执行一次“的需求覆盖不同的事件处理,我们可以将这个需求剥离出来。这个过程我们称为过程抽象。
Throttle:触发频率的设置,将频率设置为要求需要的(节流函数)
Debounce:防抖设置(变化快的时候不保存,停止变化之后才会保存,调用最后一次的改变)
Consumer / 2:调用时间改变,还有延时调用的功能
Iterative:批量操作,节省时间,相当于for循环。
纯函数:没有副作用,并且结果是可以预期的。简便,节省代码,增强可读性。
非常函数:测试之前要进行对函数的初始化。
如果使用命令式和声明式的函数,声明式的代码会更加简便。
命令式:使用if else。
声明式:要先定义一个抽象化方法,然后抽出来单独声明方法,有更强的可扩展性。
轮播图:
Html结构:是一个典型的列表结构,我们可以使用无序列表ul元素来实现。
Css 表现:绝对定位将图片把所有的图片重叠在一起,轮播图切换的状态使用修饰符,轮播图的切换动画使用css。
Js 行为:API定义一个类,实现API的行为。控制流:使用自定义事件来耦合。
实现一个功能的时候先思考是通过什么方式来实现的,每一个部分需要实现哪些功能,需要使用什么标签或者函数或者类。代码编辑时候思考每一个部分是否简便、可视化,让代码变得美观整洁便于寻找。