QuarkAdmin是什么
QuarkAdmin 是一个可以帮你快速搭建管理后台的工具;它提供的丰富组件,能帮助您使用很少的代码就能搭建出功能完善的管理后台。
经过这几个月的磨合QuarkAdmin2.0已经非常成熟了,是时候再次与大家见面了;无论是在灵活度,还是简洁度上都优于其他的Admin,下面我们进行一下对比。
架构优势
QuarkAdmin2.0采用的是前后端分离的方案,前端是基于Antd Pro的低代码引擎,我给她起的名字叫QuarkUI;是的你没看错,她未来的定位就是低代码引擎,一个可以通过JSON配置就可以组装前台页面的JS框架。后端是一个兼容各个PHP框架(例如Thinkphp)的composer包,我叫他Quark;Quark提供各种原子组件,行为、表单、表格、菜单等等等,基于Antd,应用尽有!Quark+QuarkUI=QuarkAdmin。
API简洁
QuarkAdmin参考了Laravel Nova的解决方案,API非常简洁优雅,下面我们与DcatAdmin进行对比:
我们先来看一下DcatAdmin,实现一个页面要做什么:
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Article(), function (Grid $grid) {
$grid->id->sortable();
$grid->title;
$grid->created_at;
$grid->updated_at->sortable();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Article(), function (Show $show) {
$show->id;
$show->title;
$show->created_at;
$show->updated_at;
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Article(), function (Form $form) {
$form->display('id');
$form->text('title');
$form->display('created_at');
$form->display('updated_at');
});
}
我们再来看一下QuarkAdmin:
/**
* 页面标题
*
* @var string
*/
public static $title = '文章';
/**
* 模型
*
* @var string
*/
public static $model = 'App\Article';
/**
* 字段
*
* @param Request $request
* @return array
*/
public function fields(Request $request)
{
return [
Field::hidden('id','ID'),
Field::text('title'),
Field::datetime('created_at'),
Field::datetime('updated_at')
];
}
其实QuarkAdmin1.0也是参照LaravelAdmin的方式,但是在实际的应用中,好多问题没办法优雅的解决;其中一个最头疼的问题就是代码臃肿,当你在使用LaravelAdmin逻辑复杂时,你会发现好多代码都会集中到grid、form方法里面,例如你的搜索、行为都很多的时候,grid里的代码会非常多的;笔者在开发QuarkAdmin1.0的时候异常痛苦。所以在2.0的时候,我们把行为、搜索进行了解耦;把原来集中在grid、form里面的逻辑抻开,例如:
/**
* 搜索表单
*
* @param Request $request
* @return object
*/
public function searches(Request $request)
{
return [
new \App\Admin\Searches\Input('username', '用户名'),
];
}
/**
* 行为
*
* @param Request $request
* @return object
*/
public function actions(Request $request)
{
return [
new \App\Admin\Actions\FormSubmit,
new \App\Admin\Actions\FormReset,
new \App\Admin\Actions\FormBack,
new \App\Admin\Actions\FormExtraBack
];
}
我们再来说说字段上的优势,在大多数情况下列表的字段与表单的字段是一一对应的,所以QuarkAdmin将grid、form字段的定义集中到了一起,例如:
/**
* 字段
*
* @param Request $request
* @return array
*/
public function fields(Request $request)
{
return [
Field::hidden('id','ID')->onlyOnForms(),
Field::text('title','标题'),
Field::number('sort','排序'),
Field::text('url','链接'),
Field::datetime('created_at','添加时间')->onlyOnIndex(),
];
}
未来构想
我现在开源了6个库,分别是Quark,QuarkUI,QuarkAdmin,QuarkCMS,QuarkAPP,QuarkDoc;
Quark:一个可以兼容所有PHP框架的,可以快速构建前台页面的Composer扩展包(已完成);
QuarkUI:一个可以通过JSON配置构建页面的低代码引擎(已完成);
QuarkAdmin:一个基于Quark、QuarkUI的Laravel后台扩展(已完成);
QuarkCMS:一款基于QuarkAdmin的内容管理系统(已完成);
QuarkAPP:一个可以通过JSON配置构建APP、各种小程序、H5的引擎(正在选型)
QuarkDoc:各个类库的文档。
写在最后
这个项目坚持了两年,如果算上最原始的构思,已经坚持3年多了;中间有过自我怀疑,团队抵触,技术难点无法攻克,架构方向错误种种困难,着实不易,欢迎大家点赞,最重要的还是希望大家能用起来,给大家带来价值。
Github:
github CMS 仓储:quark-cms
github 后端仓储:quark-admin
github 前端仓储:quark-ui