在日常开发中,团队中每个人组织代码的方式不尽相同 。下面我们就从代码结构的角度来看看如何组织一个更加优雅的 React 组件!1. 导入依赖项我们通常会在组件文件顶部导入组件所需的依赖项 。对于不同类别的依赖项 , 建议对它们进行分组,这有助于帮助我们更好的理解组件 。可以将导入的依赖分为四类:
// 外部依赖import React from "react";import { useRouter } from "next/router";// 内部依赖import { Button } from "../src/components/button";// 本地依赖import { Tag } from "./tag";import { Subscribe } from "./subscribe";// 样式import styles from "./article.module.scss";
- 外部依赖: 外部依赖主要是第三方依赖,这些依赖定义在
package.json
文件中并从node_modules
中导入; - 内部依赖: 内部依赖主要是位于组件文件夹之外的可重用的组件或模块 , 这些导入都应该使用相对导入语法,以
../
开头 。通常,大部分导入的依赖项都属于这一类 。因此,如果需要的话,我们可以将这一类组件进一步分离,例如:UI组件、数据相关的导入、services
等; - 本地依赖: 本地依赖主要是与组件位于同一文件夹中的依赖项或子组件 。这些依赖项的所有导入路径应以
./
开头 。主要是比较大的组件会包含本地依赖项; - 样式: 最后这一部分大多数情况下只包含一个导入——样式文件 。如果导入了多个样式表,就需要考虑样式的拆分是否有问题 。
Prettier
可以帮助我们自动格式化代码 。可以使用 prettier-plugin-sort-imports
插件来自动格式化依赖项导入 。需要在项目根目录创建prettier.config.js
配置文件,并在里面配置规则:module.exports = { // 其他 Prettier 配置 importOrder: [ // 默认情况下 , 首先会放置外部依赖项 // 内部依赖 "^../(.*)", // 本地依赖项,样式除外 "^./((?!scss).)*$", // 其他 "^./(.*)", ], importOrderSeparation: true,};
下面是该插件官方给出的例子,输入如下:import React, { FC, useEffect, useRef, ChangeEvent, KeyboardEvent,} from 'react';import { logger } from '@core/logger';import { reduce, debounce } from 'lodash';import { Message } from '../Message';import { createServer } from '@server/node';import { Alert } from '@ui/Alert';import { repeat, filter, add } from '../utils';import { initializeApp } from '@core/app';import { Popup } from '@ui/Popup';import { createConnection } from '@server/database';
格式化之后的输出如下:import { debounce, reduce } from 'lodash';import React, { ChangeEvent, FC, KeyboardEvent, useEffect, useRef,} from 'react';import { createConnection } from '@server/database';import { createServer } from '@server/node';import { initializeApp } from '@core/app';import { logger } from '@core/logger';import { Alert } from '@ui/Alert';import { Popup } from '@ui/Popup';import { Message } from '../Message';import { add, filter, repeat } from '../utils';
prettier-plugin-sort-imports
:https://Github.com/trivago/prettier-plugin-sort-imports2. 静态定义在导入依赖项的下方,通常会放那些使用 TypeScript 或 Flow 等静态类型检查器定义的文件级常量和类型定义 。
推荐阅读
- JS问题:项目中如何区分使用防抖或节流?
- python是如何进行内存管理的
- 如何提升家庭财运
- 如何看懂珠宝玉石的鉴定证书
- 珍珠保养有诀窍,让你的珠宝更闪亮
- 熬夜后如何逆袭,肌肤焕发光彩?
- 积碳会给汽车造成什么影响?如何清除它?
- 吵架后滚床单,真的会更刺激吗?
- 迷你世界如何制作岩石砖,迷你世界刷岩石塔怎么做
- 如何开通抖音团购功能?开通后对销售有何影响?