Day2(JavaScript) | 青训营笔记

90 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第2天

今天跟月影老师学了JavaScript,受益颇深。以下是一些课程上的笔记,用作记录,有不足以及错误之处还望指正!

写好js的原则

HTML,CSS,JavaScript,各司其职,职能分离 组件封装

t0121cc1e818e11d365.png

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,继续下一个...