这是我参与第五届青训营伴学笔记创作活动的第十一天
组件封装:
html结构:使用无序列表实现
css:绝对定位,将图片定位在同一位置,切换状态使用修饰符midifier,
使用css过渡动画实现鼠标悬停时转换图片
js:实现切换行为。
定义类,在类中定义如下API:(设计接口进行操作)
getSelectedItem():得到当前选择的图片元素
getSelectedItemIndex():得到当前选中的图片在列表中的位置
slideTo():点击跳转至目标图片
slideNext():点击切换下一张图片
slidePrevious():点击切换上一张图片
使用控制流添加控件:(用自定义事件来解耦)
小圆点的状态和图片切换的状态是一致的,进行状态绑定。
重构:组件化
- 重构构造函数的代码,使组件插件化:将控制元素抽取成插件,插件与组件之间通过依赖注入方式建立联系
- 抽象出三个功能:四个小圆点、左侧图标、右侧图标
- 修改功能时将组件注册到轮播图的插件中
重构:模板化
- 将HTML 组件和插件模板化 更易于扩展
- 将内容放入rander内进行渲染。
- action:内容初始化
抽象 将组件的通用模型抽象出来
过程抽象 函数式编程的基础应用
如果一个函数被调用后返回另一个函数,那么称其为高阶函数。函数作为参数,函数作为返回值,常用于作为函数装饰器。
常用的高阶函数:
- Once:令事件只执行一次
- Throttle:截留函数
- Debounce:防抖
- Consumer:每隔一段时间进行一次函数调用 延时调用
- Iterative:可迭代方法
为什么要使用高阶函数?
大大减少使用非纯函数的可能性。在系统中,非纯函数越多,系统的可维护性越差。
声明式语言比命令式语言的可扩展性更好。