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 协议》,转载必须注明作者和本文链接
本帖由系统于 3年前 自动加精
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 18

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

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

演示站点密码错误

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

太厉害了,学习的对象

3年前 评论

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

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

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

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

有没有交流群?

3年前 评论

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

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