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