react-admin

react-admin

React驱动的管理后台框架 高效构建单页应用

react-admin是一个开源的前端框架,基于React和Material Design构建。它用于开发基于REST或GraphQL API的单页管理应用,提供了丰富的组件和钩子。框架支持身份验证、路由、表单处理、数据展示、搜索筛选、国际化等功能,注重代码质量和开发效率。react-admin可完全定制,支持TypeScript,适合快速搭建各类管理后台。

React前端框架单页应用Material Design开源Github开源项目

react-admin 构建状态 FOSSA 状态 支持乌克兰

一个用于构建在浏览器中运行的单页应用程序的前端框架,基于 REST/GraphQL API,使用 TypeScript、ReactMaterial Design。由 marmelab 开源并维护。

主页 - 文档 - 示例 - 博客 - 发布 - 支持

react-admin-演示

特性

  • 🔌 后端无关: 可连接任何 API(REST 或 GraphQL,参见超过 45 个适配器的列表

  • 🧩 提供所有必需的构建模块: 为身份验证、路由、表单和验证、数据网格、搜索和过滤、关系、验证、角色和权限、富文本编辑器、i18n、通知、菜单、主题、缓存等提供钩子和组件。

  • 🪡 高质量: 可访问性、响应式、安全、快速、可测试

  • 💻 出色的开发者体验: 完整文档、IDE 自动完成、类型安全、storybook、带源代码的演示应用、模块化架构、声明式 API

  • 👑 出色的用户体验: 乐观渲染、边输入边过滤、撤销、偏好设置、保存查询

  • 🛠 完全可定制: 可用自己的组件替换任何组件

  • ☂️ 可选类型: 可使用 TypeScript 或 JavaScript 开发

  • 👨‍👩‍👧‍👦 由 Material UIreact-hook-formreact-routerreact-queryTypeScript 等驱动

安装

React-admin 可从 npm 获取。你可以使用以下命令安装它(及其所需的依赖项):

npm install react-admin #或 yarn add react-admin

文档

概览

// 在 app.js 中 import * as React from "react"; import { render } from 'react-dom'; import { Admin, Resource } from 'react-admin'; import restProvider from 'ra-data-simple-rest'; import { PostList, PostEdit, PostCreate, PostIcon } from './posts'; render( <Admin dataProvider={restProvider('http://localhost:3000')}> <Resource name="posts" list={PostList} edit={PostEdit} create={PostCreate} icon={PostIcon} /> </Admin>, document.getElementById('root') );

<Resource> 组件是一个配置组件,允许你为管理视图的每个部分定义子组件:listeditcreate。这些组件使用 Material UI 和 react-admin 的自定义组件:

// 在 posts.js 中 import * as React from "react"; import { List, Datagrid, Edit, Create, SimpleForm, DateField, TextField, EditButton, TextInput, DateInput, useRecordContext } from 'react-admin'; import BookIcon from '@mui/icons-material/Book'; export const PostIcon = BookIcon; export const PostList = () => ( <List> <Datagrid> <TextField source="id" /> <TextField source="title" /> <DateField source="published_at" /> <TextField source="average_note" /> <TextField source="views" /> <EditButton /> </Datagrid> </List> ); const PostTitle = () => { const record = useRecordContext(); return <span>Post {record ? `"${record.title}"` : ''}</span>; }; export const PostEdit = () => ( <Edit title={<PostTitle />}> <SimpleForm> <TextInput disabled source="id" /> <TextInput source="title" /> <TextInput source="teaser" options={{ multiline: true }} /> <TextInput multiline source="body" /> <DateInput label="Publication date" source="published_at" /> <TextInput source="average_note" /> <TextInput disabled label="Nb views" source="views" /> </SimpleForm> </Edit> ); export const PostCreate = () => ( <Create title="Create a Post"> <SimpleForm> <TextInput source="title" /> <TextInput source="teaser" options={{ multiline: true }} /> <TextInput multiline source="body" /> <TextInput label="Publication date" source="published_at" /> <TextInput source="average_note" /> </SimpleForm> </Create> );

它能与我的 API 配合使用吗?

是的。

React-admin 采用适配器方法,使用称为数据提供者的概念。可以使用现有提供者作为设计 API 的蓝图,或者你可以编写自己的数据提供者来查询现有 API。编写自定义数据提供者只需要几个小时。

数据提供者架构

有关详细信息,请参阅数据提供者文档

包含电池但可拆卸

React-admin 被设计为一个松耦合的 React 组件和钩子库,暴露可重用的控制器逻辑。使用自定义数据网格、使用 GraphQL 而不是 REST、使用 Bootstrap 而不是 Material Design 等,替换 react-admin 的任何部分都非常容易。

示例

examples 文件夹中有几个示例:

  • simpleStackBlitz):一个简单的博客,包含帖子、评论和用户,我们用它进行端到端测试。
  • e-commerce:(演示源码)一个虚构的海报商店管理系统,作为官方 react-admin 演示。
  • CRM:(演示源码)一个客户关系管理应用程序
  • helpdesk:(演示源码)一个带有实时锁定和通知的工单系统应用程序
  • tutorialStackblitz):按照教程构建的应用程序。

你可以通过以下方式运行这些示例应用程序:

# 在 react-admin 项目根目录 make install # 或 yarn install # 运行简单应用程序 make run-simple # 运行教程应用程序 make build make run-tutorial # 运行演示应用程序 make build make run-demo

然后在浏览器中打开控制台显示的 URL。

支持

此仓库中的版本

  • master - 将包含在下一个_补丁_版本中的提交

  • next - 将包含在下一个_主要_或_次要_版本中的提交

不破坏向后兼容性的错误修复 PR 应针对 master 分支。所有其他 PR(新功能、破坏向后兼容性的错误修复)应针对 next 分支。

贡献

如果你想帮忙:非常感谢!有很多事情可以做来使 react-admin 变得更好。

最简单的任务是问题分类。检查 GitHub 上的新问题是否遵循问题模板并提供重现问题的方法。如果没有,请评论该问题以请求更多细节。然后,尝试按照描述重现问题。如果你成功重现了问题,请添加评论说明。否则,添加评论说明缺少什么。

第二种贡献方式是回答 StackOverflow 上的支持问题。那里有很多初学者问题,所以即使你对 react-admin 不是超级有经验,也有你可以帮助的人。

欢迎在 GitHub 仓库 上提交错误修复的拉取请求。问题追踪器中总是有一堆标记为"好第一个问题"的问题——从这些开始。

如果你想添加功能,你可以在 next 分支上开启一个拉取请求。我们不接受所有功能——我们试图保持 react-admin 代码小而易管理。尝试看看你的功能是否可以作为额外的 npm 包构建。如果你不确定,可以开启一个"功能请求"问题,看看核心团队是否会接受你的功能,然后再开发它。 对于所有的拉取请求,你必须遵循现有文件的编码风格(基于prettier),并包含单元测试和文档。请做好准备接受彻底的代码审查,并对合并保持耐心——这是一个开源项目。

提示:react-admin开发者使用的大多数命令都在makefile中自动化了。可以随意输入不带参数的make来查看可用命令列表。

设置

克隆此仓库并运行make install以获取依赖项,然后运行make build将源代码从TypeScript编译为JS。

在示例应用中测试你的更改

在开发过程中,我们大多数时候使用简单示例来进行视觉检查。这与我们在Stackblitz中用来重现错误的应用相同(参见https://stackblitz.com/github/marmelab/react-admin/tree/master/examples/simple)。源代码位于`examples/simple/`下。执行`make run在8080端口(http://localhost:8080)启动该示例。此命令包括对react-admin源代码的watch`,因此你对react-admin包所做的任何更改都会触发浏览器中简单示例的实时更新。

然而,简单示例有时过于有限。你可以使用演示示例https://marmelab.com/react-admin-demo/ 的源代码),它更加完整。源代码位于examples/demo/下。执行make run-demo以使用REST数据提供者启动演示示例,或执行make run-graphql-demo以使用GraphQL数据提供者运行。不幸的是,由于我们为这个演示使用了Create React App,这些命令不会监视包中所做的更改。更改后,你需要重新构建react-admin包(使用make build,或更有针对性的make build-ra-coremake build-ra-ui-materialui等)才能在演示应用中看到效果。

这两个示例都无需服务器即可运行——API在客户端模拟。

在你的应用中测试更改

使用yarn link,你可以让你的项目使用react-admin包的本地检出版本,而不是从npm下载。这允许你在你的应用中测试react-admin的更改。

以下说明针对客户端应用中的yarn >= v3版本。

# 进入你的客户端应用文件夹 $ cd /code/path/to/myapp/ # 使用最新版本的yarn包管理器 $ corepack enable && yarn set version stable # 用本地版本的符号链接替换npm安装的版本 $ yarn link /code/path/to/react-admin/packages/react-admin # 如果你修改了react-admin monorepo中的其他内部包,例如ra-core,也要创建链接 $ yarn link /code/path/to/react-admin/packages/ra-core # 构建所有react-admin包的分发版本 $ cd /code/path/to/react-admin/ && make build # 返回你的应用并确保所有依赖项都已解析 $ cd /code/path/to/myapp/ && yarn install # 启动你的应用 $ yarn start

提示:如果你的客户端应用中仍在使用yarn v1作为包管理器,我们强烈建议你进行更新,因为它已经冻结且不再维护。

自动化测试

自动化测试在我们的开发过程中也至关重要。你可以通过以下命令运行所有测试(代码检查、单元测试和功能测试):

make test

单元测试使用jest,因此你应该能够运行一部分测试,或在更改时持续运行测试,方法是向yarn jest传递选项。

此外,与修改文件相关的测试会在提交时使用git pre-commit钩子自动运行。这意味着如果测试失败,你将无法提交更改。

在处理端到端测试时,你可以利用cypress运行器,方法是自己启动简单示例(make run-simpleyarn run-simple),然后在另一个终端中启动cypress(make test-e2e-localyarn test-e2e-local)。

编码标准

如果你有编码标准问题,可以通过调用以下命令使用prettier自动修复它们:

make prettier

但是,这些命令会在每次提交时自动运行,所以你不应该太担心它们。

文档

如果你想为文档做贡献,请安装jekyll,然后执行:

make doc

然后浏览到http://localhost:4000/

许可证

React-admin 根据 MIT 许可证授权,由marmelab赞助和支持。

FOSSA状态

捐赠

这个库可以免费使用,即使是商业用途。如果你想回馈,请谈论它,帮助新手,或贡献代码。但最好的回馈方式是向慈善机构捐款。我们推荐无国界医生组织

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多