跟着月影学JS | 青训营笔记

72 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第3天。

如何写好 JS1

code.juejin.cn/pen/7117822…

如何写好 JS2

code.juejin.cn/pen/7119668…

各司其职

让 HTML、CSS和 JavaScript 职能分离,HTML是页面的骨架,CSS是页面的皮肤,JavaScript是页面的动作了。我们在写代码的时候应该他们各自负责自己该负责的部分,尽可能的少用 JS 干扰 CSS 和 HTML ,这样的代码才是高质量的。

例子:深色模式切换

组件封装

组件封装这节课,老师拿出了学习js首先会接触到的轮播图。他的实现不难,老师带着我们从头开始封装。

组件:是指Web页面上抽出来一个个包含模板(HTML)、功能(JS)和样式(CSS)的单元。

一个好的组件需要具备封装性、正确性、扩展性、复用性等。

一开始的HTML和css不必多说,直接到js,也就是行为设计。行为设计可以分为API(功能)和控制流,这里老师抽离出了几个方法,

实现了基本功能后老师提出了个问题,既然是要封装组件,那么我不想要某个功能之后,还得删除对应的HTML,是不是很麻烦,又该怎么做呢?

将HTML模板化

将HTML模板化,就像使用Vant等组件库一样,只有模板的HTML,并不需要将整个代码都写在页面上。当我们修改组件时,只需要修改模板代码,不需要修改页面源代码。

最后再把通用的组件模型抽象出来。

过程抽象

听了这节课,我感觉老师讲的意思大概和黑盒模型一样,只考虑输入输出,不考虑中间处理过程。还讲了几个高阶函数。

总结

  • HTML/CSS/JS 各司其责,HTML结构、CSS表现、JS行为
  • 应当避免不必要的由 JS 直接操作样式
  • 可以用 class 来表示状态
  • 纯展示类交互寻求零 JS 方案

通过上课讲解的不同的版本,使得代码一次一次得到优化,更简练也更直观,这是我们今后学习前端需要努力的目标!