предисловие
- Хорошие стандарты кодирования очень важны, как с точки зрения визуального, так и после обслуживания.Нет никаких правил и положений.Мы разобрались с некоторыми из текущих стандартов кодирования нашей команды и надеемся помочь всем.
Спецификация проверки кода переднего плана
- Справочник по спецификации кодирования, спецификация проверки кода
документация проекта readme
1. Описание среды и версии
- реагировать на версию 17.xx
- umi-request 1.3.xxx
- single-spa 5.9.xx
2. Среда разработки и конфигурация
2.1 Информация о проекте
2.1.1 Адрес документа
- документация по интерфейсу
- Документ с требованиями
- Требования к компоненту XX для второго этапа августа Адрес документа: https:XX
- Требования к компоненту xx для первой фазы сентября Адрес документа: https:XX
- проектная документация
2.1.2 UI&UX-адрес
- Карта-прототип Адрес документа: https:XX
- Схема пользовательского интерфейса Адрес документа: https:XX
2.1.3 Адрес интерфейса
2.2 Конфигурация проекта
2.2.1 Установка проекта
pnpm install
2.2.2 Компиляция проекта и горячая загрузка [Режим разработки]
pnpm run dev
2.2.3 Компиляция проекта
pnpm run build
2.2.4 Проверьте код
pnpm run lint
// 检查代码并自动格式化
pnpm run lint:fix
2.2.5 Сожмите и скопируйте файл dist в корневой каталог проекта и поместите его в корневой каталог проекта сервера, чтобы распаковать его.
3. Код и структура каталогов кода и описание функций файла кода
3.1 Описание плагина
- Внешний интерфейс использует плагин холста splitFunction.
- Отправить запрос с помощью umi-request
3.2 Описание структуры кода
Пример:
-
dist публикует статический каталог файлов после упаковки
-
node_modules каталог установки модуля узла
-
общедоступный общедоступный каталог
-
Картинка в левой части шапки сайта favicon.ico;
-
Index.html шаблон страницы упаковки webpack/vite/rollup;
-
Каталог разработки SRC
-
components
-
hooks
-
servers
-
utils
-
xx
-
Приложение App.tsx входной файл проекта
-
config.ts
-
xxx
-
-
Основной файл проекта main.js
-
gitignore игнорирует промежуточные файлы, созданные при компиляции
-
babel.config.js файл конфигурации Babel
-
файл зависимостей между модулями package-lock.json
-
файл описания проекта package.json
-
Документация проекта README.md
Спецификация написания бизнес-компонентов
- Каталог бизнес-кода (обязательное соглашение)
- пример кода реагировать,
// 导入顺序为:node_modules 文件 -> @/ 开头文件 -> 相对路径文件
// 导入 React
import React from 'react';
// 导入子组件
import Child from './Child';
// ...
// 导入对应同名的 .less,起名为 styles
import styles from './HelloWorld.module.less';
/**
* 类型定义(命名:组件名 + Props)
*/
export interface HelloWorldProps {
// 参数定义(本注释独立一行,禁止放变量末尾)
username: string;
}
/**
* 组件注释(简明概要)
*/
const HelloWorld: React.FC<HelloWorldProps> = ({ username }) => {
// 1. hooks 位置
// 2. effects 位置
// 3. 内部 function 位置
// ...
return (
<div className={styles.wrapper}>
{username}
<Child />
</div>
);
};
// 导出组件
export default HelloWorld;
инкапсуляция общедоступного компонента
-
Как мы инкапсулируем публичный компонент?
1. Компоненты, которые необходимо использовать в нескольких местах проекта.
2. Компоненты, не связанные с бизнесом, публичные компоненты, связанные с бизнесом
3. Всеми состояниями можно управлять извне, а их поведение контролируется входящим реквизитом вместо того, чтобы обнажать его внутреннюю структуру.
封装良好的组件隐藏其内部结构,并提供一组属性来控制其行为。 隐藏内部结构是必要的。其他组件没必要知道或也不依赖组件的内部 结构或实现细节
-
Единый каталог в нашем проекте, в основном для удобства
-
содержание:
- index.tsx — основной файл записи (пример кода)
import React from 'react';
import classNames from 'classnames';
import { Tooltip } from 'antd';
import styles from './index.module.less';
interface LinkIconProps {
// 链接地址
linkHref?: string;
// 图标
iconSvg: React.ReactSVG | React.ReactNode;
// 提示字段
title?: string;
// a标签其余参数
target?: HTMLAnchorElement['target'];
// 样式
className?: string;
}
const LinkIcon: React.FC<LinkIconProps> = ({
linkHref,
target = '_blank',
iconSvg,
title,
className,
}) => {
return (
<Tooltip title={title}>
<a href={linkHref} target={target} className={classNames(styles.linkA, className)}>
{iconSvg}
</a>
</Tooltip>
);
};
export default LinkIcon;
- index.md — это пример использования компонента, необходимые комментарии к коду, и необходимо четко рассказать другим, как использовать этот общий компонент
Документация третьих лиц
- Все сторонние плагины, используемые в проекте, должны быть отсортированы для удобства обслуживания в дальнейшем.
- Пример:
портал
- Мое резюме одноклассников, которые опросили более 100 человек в этом году
- Почему я настаиваю на том, чтобы вставать в шесть часов?
- Группа обмена перфокартами в шесть часов
- Я очень беспокоюсь о чтении технических книг, что мне делать, если я не могу читать книги?
- тяжелая работа === "ролл" ?
- первая серия практических проектов vite + react + ts (конфигурация проекта)
- vite + react + ts рукопашный проект, серия 2 (актуальная глава)