这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天。
一、本堂课重点内容
- JavaScript 好代码的标准
- HTML/CSS/JS 各司其责
- 组件的定义解析及特征
- 组件封装基本方法
- 利用原生 JS 实现电商网站轮播图
- 过程抽象概念
- 高阶函数使用模式
- JavaScript 编程范式
二、详细知识点介绍
写好JS的原则
- 各司其责
- 组件封装
- 过程抽象
结构: HTML
轮播图是一个典型的列表结构我们可以使用无序列表<ul>元素来实现。
<div id="my-slider" class="slider-list">
<ul>
<li class="slider-list_item--selected">
<img src="https://p5.ssl.qhimg.com/t0119c74624763dd070.png"/>
</li>
<li class="slider-list item">
<img src="https://p4.ssl.qhimg.com/t0ladbe3351db853eb3.jpg"/>
</li>
<li class="slider-list item">
<img src="https://p2.sst.qhimg.com/t01645cd5ba0c3b60cb.jpg"/>
</li>
<li class="slider-list__item">
<img src="https://p4.ssl.qhimg.com/t0133lac159b58f5478.jpg"/>
</li>
</ul>
</div>
表现: CSS
- 使用 CSS 绝对定位将图片重叠在同一个位置
- 轮播图切换的状态使用修饰符 (modifier)
- 轮播图的切换动画使用 CSS transition
#my-slider{
position: relative;
width: 790px;
}
.slider-list ul{
list-style-type:none;
position: relative;
padding: 0;
margin: 0;
}
.slider-list__item,
.slider-list__item--selected{
position: absolute;
transition: opacity ls;
opacity: 0;text-align: center;
}
.slider-list__item--selected{
transition: opacity Is ;
opacity: 1;
}
行为: JS
- API 设计应保证原子操作,职责单一,满足灵活性
解耦
- 将控制元素抽取成插件
- 插件与组件之间通过依赖注入方式建立联系
- 将HTML模板化,更易于扩展
抽象
将通用的组件模型抽象出来
过程抽象
- 用来处理局部细节控制的一些方法
- 函数式编程思想的基础应用
Once
- 为了能够让“只执行一次“的需求覆盖不同的事件处理,我们可以将这个需求剥离出来。这个过程我们称为过程抽象。
高阶函数
- 以函数作为参数
- 以函数作为返回值
- 常用于作为函数装饰器
编程范式
- 命令式
- 声明式
三、课后个人总结
- 在定义函数时,要做好封装函数,尽量不要让一个函数直接处理一个外部的变量,最好把这个变量变成一个参数,传递给函数。
- 写出来的代码最重要的还是要保证正确。在遇到一些比较复杂的情况,要考虑到算法的数学模型,最好能给予证明,保证代码的数理正确性。