这是我参与「第四届青训营 」笔记创作活动的的第2天
今天跟月影老师学了JavaScript,受益颇深。以下是一些课程上的笔记,用作记录,有不足以及错误之处还望指正!
写好js的原则
HTML,CSS,JavaScript,各司其职,职能分离 组件封装
ui组件
好的ui组件具备正确性,扩展性,复用性
深夜食堂修改背景暗黑的例子
-
纯css修改,根据checkbox的状态,进行css上checkbox:checked +content 选择
-
无须写js代码(纯展示类寻求0js的方案)
组件定义
组件指的是web页面上抽象出来的一个包括模板(HTML),功能(JS)和样式(CSS)
组件封装步骤
实现组件的步骤:结构设计、展现效果、行为设计 (api,event)
组件设计原则
组件设计的原则:封装性、正确性、扩展性、复用性
组件框架:将组件通用模型抽象出来
过程抽象
用来处理局部细节控制的一些方法
函数式编程思想的基础应用 三次重构:插件化,模板化,抽象化(组件框架 )
常用高阶函数
- HOF
- Once
- Throttle
- Debounce
- Consumer / 2
- Iterative
编程范式
- 命令式:描述流程,计算机按流程实现目标。
- 声明式:描述目标的性质,让计算机明白目标,而非流程。
JavaScript和 TypeScript区别
typescript :在JavaScript的基础上添加静态类型定义构建而成
- 语言:都是ECMAScript(ECMA-262)的具体实现。
- 执行环境:浏览器引擎和Node.js都能够直接运行JavaScript,TypeScript无法直接运行。
- 时序:TypeScript被真正执行前,会通过编译转换生成JavaScript,之后才能被解释执行。
- 厂商:JavaScript由Netscape率先推出,现在主要由各大浏览器厂商实现。TypeScript由微软进行设计和维护。
一些tips
代码风格不能单纯评判为好坏,应该具体考虑使用场景,约定,设计,性能等
写代码过程中注意
代码可读性,可拓展性以及封装
算法例子
- 交通灯的例子,采用方式:抽象(数据抽象+过程抽象) +异步加函数
- 4的幂以及洗牌的算法几种实现方式,并通过数学归纳法的方式证明
- 分红包
- 切西瓜法:第一刀切成两部分,一部分大的一部分小的,第二刀切大的那块。
- 抽牌法:分100元红包,数列从0~99,随机插入数,如插到5,第一个人分到5,继续下一个...