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 协议》,转载必须注明作者和本文链接
本帖由系统于 2年前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 18

前端有vue的方案吗?一直在用vue

2年前 评论
tangtanglove (楼主) 2年前
91it (作者) 2年前
playmaker 2年前
tangtanglove (楼主) 2年前
playmaker 2年前
tangtanglove (楼主) 2年前

演示站点密码错误

2年前 评论
tangtanglove (楼主) 2年前

太厉害了,学习的对象

2年前 评论

可惜不是vue,奈何我不会React

2年前 评论
tangtanglove (楼主) 2年前

支持!一直在用laravel-admin,但是更新太慢了!

2年前 评论
tangtanglove (楼主) 2年前

有没有交流群?

2年前 评论

我在用 Dcat 的时候也有些问题,比如在 octane 下菜单排序有问题,还有我用到复杂的 json 的时候 Dcat 无法处理,等等,来试试 quarkadmin,如果不错就正式用了,多谢作者

2年前 评论
tangtanglove (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!