refine
v
精炼是针对Crud繁重的Web应用程序的React Meta-Framework。它解决了广泛的企业用例,包括内部工具,管理面板,仪表板和B2B应用程序。
通过为项目的关键方面提供行业标准的解决方案,包括身份验证,访问控制,路由,网络,州管理和I18N ,可以简化开发过程。
Refine的无头体系结构可以通过将业务逻辑与UI和路由分离来构建高度可自定义的应用程序。这允许与:
任何定制设计或UI框架(例如TailWindCSS),以及对蚂蚁设计,材料UI,Mantine和Chakra UI的内置支持。
通过简单的路由接口,不需要其他设置步骤,包括Next.js,React,React Native,Electron等各种平台。
使用以下命令在几秒钟内使用精炼启动一个新项目:
npm create refine-app@latest my-refine-app或者,您可以在浏览器上创建一个新项目:
这是在采取行动中,以下代码是使用Refine + React Router + Material UI的简单CRUD应用程序的一个示例:
import React from "react" ;
import { Refine , useMany } from "@refinedev/core" ;
import { ThemedLayoutV2 } from "@refinedev/mui" ;
import dataProvider from "@refinedev/simple-rest" ;
import routerProvider from "@refinedev/react-router" ;
import { BrowserRouter , Outlet , Route , Routes } from "react-router" ;
import CssBaseline from "@mui/material/CssBaseline" ;
export default function App ( ) {
return (
< BrowserRouter >
< CssBaseline />
< Refine
dataProvider = { dataProvider ( "https://api.fake-rest.refine.dev" ) }
routerProvider = { routerProvider }
resources = { [
{
name : "products" ,
list : "/products" ,
} ,
] }
>
< Routes >
< Route
element = {
< ThemedLayoutV2 >
< Outlet />
</ ThemedLayoutV2 >
}
>
< Route path = "/products" >
< Route index element = { < ProductList /> } />
</ Route >
</ Route >
</ Routes >
</ Refine >
</ BrowserRouter >
) ;
}
// src/pages/products/list.tsx
import { List , useDataGrid , DateField } from "@refinedev/mui" ;
import { DataGrid , GridColDef } from "@mui/x-data-grid" ;
export const ProductList = ( ) => {
const { dataGridProps } = useDataGrid ( ) ;
const { data : categories , isLoading } = useMany ( {
resource : "categories" ,
ids :
dataGridProps ?. rows ?. map ( ( item ) => item ?. category ?. id ) . filter ( Boolean ) ??
[ ] ,
queryOptions : {
enabled : ! ! dataGridProps ?. rows ,
} ,
} ) ;
const columns = React . useMemo < GridColDef [ ] > (
( ) => [
{ field : "id" , headerName : "ID" , type : "number" } ,
{ field : "name" , flex : 1 , headerName : "Name" } ,
{
field : "category" ,
flex : 1 ,
headerName : "Category" ,
display : "flex" ,
renderCell : ( { value } ) =>
isLoading
? "Loading..."
: categories ?. data ?. find ( ( item ) => item . id === value ?. id ) ?. title ,
} ,
{
field : "createdAt" ,
flex : 1 ,
headerName : "Created at" ,
display : "flex" ,
renderCell : ( { value } ) => < DateField value = { value } /> ,
} ,
] ,
[ categories ?. data , isLoading ] ,
) ;
return (
< List >
< DataGrid { ... dataGridProps } columns = { columns } />
</ List >
) ;
} ;结果看起来像这样:
精炼数据密集型⚡企业B2B应用程序,例如管理面板,仪表板和内部工具。得益于内置的SSR支持,它还可以为面向客户的应用程序(例如店面)提供动力。
您可以查看一些可以从头开始使用完善的实时示例:
有关更多信息,请参阅贡献文档。
如果您对项目有任何疑问或想讨论某些内容,请加入我们的Discord服务器。
我们对所有众多贡献者表示感谢,他们创建插件,协助问题并提出请求,并回答有关Discord和Github讨论的问题。
完善是一个以社区为导向的项目,您的贡献不断改善。
根据MIT许可,版权所有©2021-PRESENTINGEDEV