这是我参与「第五届青训营 」笔记创作活动的第2天。 在这里记下一些对JavaScript的学习与理解。
- 三个原则:各司其职, 组件封装, 过程抽象。
- 结构表现行为分离。 HTML/CSS/JS 各司其职 应当避免不必要的由JS直接操作样式 可以用class来表示状态 纯展示类交互寻求零JS方案。
- 组件封装, 组件是指web页面上抽取出来的包含模板(html), 功能(js), 样式(css)的单元。好的组件具备封装性、正确性、 扩展性、复用性。
由轮播图带来的启示
4. 写轮播图 :无序列表ul实现。
5. 总结:基本方法 :1.结构设计 2.展现效果 3.行为设计:API EVENT。
6. 重构: 插件化 解耦 将控制元素抽取成插件,插件与组件之间通过依赖注入方式建立联系。可以实现插件是否开启。
7. 抽象:将组件抽象模型抽象出来。
总结:组件设计的原则:封装性、正确性、扩展性、复用性。
实现组件的步骤:结构设计、展现效果、行为设计。
三次重构:插件化,模板化,抽线化。
- 过程抽象:函数式编程 高阶函数: HOF: Once, Throttle, Debounce, Consumer, Iterative
function HOFO(fn){
return function(...args){
return fn.apply(this, args);
}
}
使用告诫函数的原因是提高纯函数的含量. 写代码的风格: 命令式和声明式.为了方便阅读和扩展,一般使用声明式.
9.交通灯的状态切换.
- 4的幂的邪道判断,通过原数 a & (a-1) 进行运算判断,在leetcode上是有的.
11.这节课不是很懂,明明一应该是代码规范,但是讲的大部分都是算法的内容.关于红包分割与切西瓜的问题,首先随机划分两块,然后取其中最大的那一块,用来继续划分,以此循环往复.时间复杂度O(n).