这是我参与「第五届青训营 」笔记创作活动的第3天
写好JavaScript的一些原则
各司其职
因为前端开发已经讲代码类型分为HTML、CSS、JavaScript。所以我们最好各司其职,让相应的文件做相应的事情。避免不必要由JS直接操作样式,纯展示类交互寻求零JS方案。
组件封装
我们的代码应该具有复用性、拓展性、正确性。在封装一个组件时,我们需要先设计结构,然后写好展现的效果,最后我们再进行行为设计,包括其中的API(功能)和Event(控制流)
优化组件的方式
- 解耦:将控制元素抽取成插件、插件与组件之间通过 依赖注入方式建立联系、将HTML模板化由JS去生成HTML、更易于拓展、将组件通用模型抽象出来。
- 组件设计原则:封装性、正确性、拓展性、复用性
- 重构:插件化、模板化、抽象化(组件框架)
过程抽象
我们应该应用函数式编程思想。用来处理局部细节控制的方法,函数式编程思想的基础应用,也就是在我们常用的一些方法,他可以做到最简单的事,比如就执行一次,他与业务的无关,也可以用在其他的地方,但是他可以方便我们开发,对于之后的业务或者其他的业务都可以用到,我们就可以把这些过程抽象起来。
纯函数与非纯函数
纯函数:通常是我输入A,他会马上返回一个B,他的优点是可以马上给我们一个完成的结果,而且每次A返回的都是同样的B。在任何时候想测试他都可以知道他是否符合预期。 非纯函数:在输入A的时候,他可能不会马上返回一个B,或者他每次调用返回的结果都是不一样的,缺点是测试难度上升,可能需要构建特定的环境。
高阶函数:通常是一个函数return一个新的函数,在这个过程中可以有许多普通函数做不到的操作。
使用高阶函数可以减少我们对非纯的函数的使用。
命令式与声明式
- 命令式:强调怎么做,我需要一步步的做什么。优点是简单易用代码量较少
- 声明式:我声明一个方式,你根据这个方式去做。优点是可重复使用,更强的可拓展性,修改的成本低。
总结
在现代的编程代码中,我们需要追求代码的各司其职,考虑代码的复用性,拓展性,对于小项目来说,可能并不重要,但是在前端越来越复杂的今天,代码的拓展和易用是非常重要的,不然在后期修改或者拓展的情况下,之前写的不够拓展的代码,虽然能正常的完成我们的需要的业务,但是增加新的功能业务时,需要的修改量可能是成倍增长的,所以我们需要更优秀的代码习惯和好的编程思维。