Cadmin: клиентская часть на React и Ant.Design
Проект: — GitHub: https://github.com/baiy/Cadmin-client-react; — Gitee: https://gitee.com/baiy/Cadmin-client-react.
Онлайн-документация: https://baiy.github.io/Cadmin/.
Зависимости: — React; — localStorage; — Redux; — Axios; — Ant.Design; — Lodash.
Среда разработки создана с помощью Create React App.
Установка:
// Установка
npm install
// Разработка
npm start
// Компиляция
npm run build
Дополнительные вопросы по разработке и компиляции см. в документации Create React App.
Конфигурация:
Файл конфигурации: ./env.
Используются переменные окружения Create React App:
Конфигурационная переменная | Описание |
---|---|
REACT_APP_ADMIN_TOKEN_NAME | Имя токена, который хранится в localStorage |
REACT_APP_API_URL_PREFIX | Префикс URL для запросов к серверу |
REACT_APP_API_ACTION_NAME | Название переменной action в запросах к серверу |
REACT_APP_API_TOKEN_NAME | Название переменной token в запросах к серверу |
REACT_APP_INDEX_URL | URL страницы после входа (обычно /) |
REACT_APP_SITE_NAME | Название сайта в левом верхнем углу страницы |
REACT_APP_SITE_TITLE_TPL | Шаблон заголовка страницы |
Пример получения значения конфигурационной переменной:
import {config} from "src/utils/helper";
let name = config('SITE_NAME');
При получении значения переменной REACT__ имя переменной указывать не нужно.
Маршрутизация и меню:
В системе реализована динамическая загрузка страниц по определённым правилам:
Например:
Путь файла | Маршрут |
---|---|
/src/pages/system/user/index.tsx | /system/user |
/src/pages/a/b/c/d/index.tsx | /a/b/c/d |
Меню делится на три типа:
Для меню, соответствующего странице, маршрут задаётся в конфигурации на сервере.
Redux:
Файлы в папке /reducers/:
Файл | Маршрут |
---|---|
user | Информация о текущем пользователе |
allUser | Список всех пользователей на сервере |
menu | Меню, доступное текущему пользователю |
request | Запросы, доступные текущему пользователю |
auth | Права текущего пользователя |
userGroup | Группы пользователей |
currentMenu | Текущее меню |
currentMenus | Все меню, включая родительские |
Запросы к серверу:
Методы запроса:
import request from "src/utils/request";
// GET запрос
request('/system/request/remove').
data({id:1}).
showSuccessTip().
success(r=>{
console.log(r)
}).get();
// POST запрос
request('/system/request/remove').
data({id:1}).
showSuccessTip().
success(r=>{
console.log(r)
}).post();
Метод request() принимает в качестве аргумента действие (action), которое отправляется на сервер.
Возвращаемое значение метода request() — объект request из файла src/utils/request.
Токен автоматически добавляется к запросу, поэтому его не нужно передавать явно.
Объект request имеет следующие методы:
Метод | Описание | По умолчанию |
---|---|---|
dataType(string) | Формат ответа | json |
contentType(string) | Заголовок Content-Type | application/x-www-form-urlencoded |
data(object) | Данные запроса | {} |
showSuccessTip() | Отображение сообщения об успешном выполнении запроса | Не отображается |
hideErrorTip() | Скрывает сообщение об ошибке выполнения запроса | Отображает сообщение об ошибке |
success(function) | Функция обратного вызова при успешном выполнении | null |
error(function) | Функция обратного вызова при ошибке выполнения | null |
complete(function) | Функция обратного вызова после выполнения | null |
get() | Отправляет GET-запрос | — |
post() | Отправляет POST-запрос | — |
Запрос отправляется только при вызове методов get() или post().
Также можно использовать axios и самостоятельно отправлять запросы, используя метод actionUrl() для генерации URL и добавления токена:
import {actionUrl} from 'src/utils/helper'
let url = actionUrl('action')
Встроенные компоненты:
Помимо компонентов Ant.Design, в системе есть несколько встроенных компонентов, которые часто используются при разработке:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )