QuarkAdmin对比DcatAdmin,LaravelAdmin
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
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
前端有vue的方案吗?一直在用vue
演示站点密码错误
太厉害了,学习的对象
可惜不是vue,奈何我不会React
支持!一直在用laravel-admin,但是更新太慢了!
有没有交流群?
我在用
Dcat的时候也有些问题,比如在octane下菜单排序有问题,还有我用到复杂的json的时候Dcat无法处理,等等,来试试quarkadmin,如果不错就正式用了,多谢作者先顶一顶 :+1: