JavaScript学习与思考 | 青训营笔记

81 阅读2分钟

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

(这也是我第二次参加青训营啦~

本期青训营依旧是干货满满的技术分享👍



基础知识

Node.js 是 JavaScript 的服务器运行环境(runtime

功能

实现动态行为

  • 在变量中储存有用的值
  • 操作一段文本(字符串)
  • 响应事件(点击)

浏览器api

  • 创建、移除、修改html,如弹窗
  • 地理位置
  • 多媒体 播放音频、利用自己的摄像头录像

位置

<script> 放在HTML文件的底部附近

语法

声明变量 let var

关键字 new 跟着一个含参函数,告知浏览器创建一个对象

类似函数调用,并把结果保存到变量中。



原则

各司其职

三元素职能分离

结构、表现、行为:三者分离

以切换夜间模式的小组件为例:

版本1

简单版本的夜间模式切换

直接操作body image.png

版本2

直接操作css

image-20220725213227981

对应的css有改变,加入body.night部分的修改

版本3 利用checkbox,改变css,则不用加入一行js代码。

总结:

避免不必要的由JS直接操作样式。本例为纯展示类交互,可以采用零JS的方案。


组件封装

以轮播图为例

  1. 将控制元素拆分(左右滑动的箭头、下方小圆点);彼此之间通过依赖注入的方式建立联系。
  2. 将html模板化,使得一个 <div class='slider‘></div> 就能实现图片轮播、修改控制器的构造,传入图片列表。
  3. 将通用的组件模型,抽象出组件类(Component),其他组件类通过继承该类,并实现render方法。

总结:

好的ui组件具备正确性、拓展性、复用性。

需要做好结构设计、展现效果、行为设计等。


过程抽象

应用函数式编程思想,是处理局部细节控制的方法。

举例:节流、防抖等方面的应用。

纯函数:返回结果只依赖于它的参数,并且在执行过程里面没有副作用

优点:

  • 方便进行单元测试!
  • 减少系统中非纯函数的数量,从而使得系统可靠性增加