什么才是好的JavaScruipt代码?
写好JavaScruipt的三个原则:
各司其职:
让HTML、CSS、JavaScruipt职能分离;
组件封装:
好的UI组件具有正确性、扩展性、复用性;
过程抽象:
应用函数式编程思想,即编程范式;
结构表现,行为分离;
功能相同,应当追求项目的简洁性,让代码有更多的可读性,让别人一看就可以懂得代码的含义;
要点:
应当避免不必要的由JS直接操作的样式;
可以用Class来表示状态;
纯展示类交互寻求零JS方案;
组件封装:
组件是指WEB网页上抽出来的一个个包含模板(HTML)、样式(CSS)和功能(JavaScruipt)的单元。好的组件具备封装性、正确性、扩展性和复用性。
结构:HTML
结构:轮播图是一个典型的列表结构,我们可以用无序列表u1元素来实现。
表现:CSS
表现:
使用CSS绝对定位将图片重叠在同一个位置;
轮播图切换位置使用的状态使用修饰符(modifier);
轮播图的切换动画使用CSS transition
行为:JS
行为:API
Slider:
+getSeleceteditem();
+getSeleceteditemIdex();
+slideTo();
+slideNext();
+slidePrevious()
行为:控制流
使用自定义事件来解耦(技巧)
组件装封方法总结:
基本方法:
结构设计;
展现效果;
行为设计:
API(功能)
Event(控制流)
改进组件:
定位主要问题
重构组件:组件插件化
解耦:
将控制元素抽取成插件;
插件与组件之间通过依赖注入方式建立联系;
插件抽象,可以新增相关插件
组件框架:
定义组件,控制插件
抽象:将组建通用模型抽象出来
组件封装总结:
组件设计的原则:
封装性,正确性,扩展性,复用性;
实现组件的步骤:
结构设计,展现效果,行为设计;
三次重构:
插件化,模板化,抽象化(组件框架);
另外,可以考虑组件的改进,探索进一步改进的空间;
原则三:
过程抽象:
用来处理局部细节的一些方法;
函数式编程思想的基础应用;
为了能够只执行一次的需求覆盖不同的事件处理,我们可以将需求剥离出来,这个过程称之为过程抽象
高阶函数:
HOF:
以函数作为参数;
以函数作为返回值;
常用于作为函数装饰器;
常用高阶函数:
Once;Throttle(节流函数);Debounce(防抖函数);Consumer(延时调用函数);Iterative
与纯函数的对比:
纯函数:输入不变时,结果单一且确定不变;
非纯函数:与调用条件有关,输入不变,结果也会有变化;
编程范式:
命令式与声明式:
命令式:怎么做
声明式:做什么
代码质量优化之路