前端如何写出高质量的代码(一)

6 阅读3分钟

1、清晰的项目结构

前言:清晰的项目结构可以让新人上手更快,简单来讲,一个项目的结构划分要符合以下结构

1、完全独立

例子:a项目有static(静态资源)、js(js文件)、css(css文件)目录,现有demo.js文件按照这三个目录划分归类,那可以放置在static和js目录下,一个文件可以放置在两个目录下,这显然违背了完全独立的原则

2、完全穷尽

例子:a项目目录划分要包含住所有的文件分类,不可以出现有文件归类后放置不进来的case

3、分层思维

例子:项目划分要进行分层,上层目录可以引用下层目录,但是下层目录不可以引用上层,比如我们的组件划分应该是

flowchart TD
    页面组件 --> 业务组件 --> 项目基础组件 --> 通用业务组件

4、就近原则

例子:当我们想对一个项目结构中的子结构进行增删改查时,应该以最小成本的去实现,不要动其他地方,比如我们想删除一个模块,最好的实现就是这个模块在之前的项目结构中就应该在同一块维护,我们删除的时候就直接删除

5、一致原则

例子:我们的项目结构应该和团队保持一致

2、封装函数库

1、url和method绝对不可以进行硬编码

2、将接口封装在services层

3、不可以直接调用fetch、axios第三方库,否则会违反依赖倒置,

依赖倒置即:高层模块(业务)不要依赖具体的底层实现,大家都依赖「抽象 / 接口」。项目与第三方库深度不耦

3、表单开发

先了解下受控组件Vs非受控组件 受控组件即受控制的组件,数据不是自己维护,他有prop和onchange的属性,数据由父组件进行维护,子组件只是消费, 非受控组件即不受控制的组件,数据由自己维护,通常从父组件接管一个value作为自己的初始值,父组件通常想获取这个值,需要子组件抛出getData方法,父组件用Ref去拿到这个值。

1、我们在日常开发组件的时候应该用受控组件去进行开发

2、少写dom,可用配置表单的写法,定制化需求可用插槽实现

3、父组件给子组件传递值时,用什么传递什么

4、封装组件要单一职责

5、通用组件不应该耦合业务逻辑,提供插槽

6、组件的扩展性

扩展dom:用插槽 扩展逻辑:用钩子函数

7、子组件绝对不能修改父组件传递进来的props数据,

4、组件的耦合度设计

1、父->子

父给子传递prop数据 父接受子事件 父调用子组件向外暴露的事件

2、子->父

接受子组件的prop 向父组件抛出事件 绝对不可以出现:子组件命令父组件做事。只需要通知父组件当时发生了什么就可以

3、组件不可以耦合外部数据

什么是外部数据:url、全局状态、localstorage

4、组件不要耦合业务逻辑

5、基础组件要设计其通用性,业务组件要设计其易用性