如何写好JavaScript|青训营笔记

71 阅读3分钟

这是我参与「前端青训营」笔记创作活动的第4天。

1、如何写好js代码:

image.png

各司其职: 让 HTML、CSS和JavaScript 职能分离

组件封装: 好的UI组件具备正确性、扩展性、复用性

过程抽象: 应用函数式编程思想

1.1 各司其职

结构分离表现:html只控制网页结构,css只控制网页样式, js只控制网页逻辑,让各功能各司其职,获得简洁代码,提高代码可维护性和可拓展性。

纯展示类功能模块寻求零JS方案:下方代码通过给HTML骨架加上一个checkbox的状态,后通过绑定到兄弟节点content上,通过简单的html和css达到控制页面的结果,代码中没有一行js,也实现了和js一样的点击事件的效果

<body> 
    <!-- 在这里添加了一个隐藏的input,给了一个checkbox --> 
    <input id="modeCheckBox" type="checkbox">
    <div class="content"> 
        <header> 
            <label id="modeBtn" for="modeCheckBox"></label> 
            <h1>深夜食堂</h1> 
        </header> 
    ![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2b34e4abe70f410fa95c84f8b59ddfff~tplv-k3u1fbpfcp-zoom-1.image)</div> 
// ... 
</body>
// 隐藏input #modeCheckBox { display: none; } 
// 将input与兄弟节点.content绑定起来,通过checkbox的状态控制页面的css样式,适用于简单的不需要复杂业务的写法 
#modeCheckBox:checked + .content { 
    background-color: black;
    color: white;
    transition: all 1s; 
}

1.2 组件插件化

组件插件化即:讲控制元素抽取成插件

插件与组件之间通过依赖注入方式建立联系

将组件插件化的优势

  • 能按照功能进行区分
  • 一个插件的增加与删除不影响系统其他功能的使用
  • 复用性高
  • 扩展性强

1.3 高阶函数

image.png

高阶函数即:

  • 以函数作为参数
  • 以函数作为返回值
  • 常用于作为函数装饰器

常用的高阶函数:image.png

1.4 纯函数

纯函数的定义:

  1. 此函数在相同的输入值时,需要产生相同的输出,
  2. 函数的输出和输入值以外的其他隐藏信息或状态无关,也与由I/O设备产生的外部输出无关(只与函数的输入值和内部的执行有关系,外部输出无关例如键盘输入函数中由键盘输入的不算。
  3. 该函数不能有语义上可观察的函数副作用,比如”触发事件”使输出设备输出,或更改输出值意外物件的内容等。(函数执行时不能再里面触发其他的事件。

纯函数的好处就是输出结果能够符合预期,可以提升库的可维护性,所以在实际开发中,鼓励使用高阶函数,减少非纯函数使用的可能性。

1.5 编程范式

命令式

强调过程,写法简单,但拓展性和复用性较低。

声明式

较强的可拓展性和可维护性,React的代码便是遵循声明式编程范式,React在内部帮我们处理好处理DOM的代码逻辑,使用时我们只需使用React.DOM操作DOM,而不需像过去那样,使用Document.getElementBtId,来获取我们需要操作的DOM等等。