QuarkAdmin对比DcatAdmin,LaravelAdmin

Laravel框架
582
0
0
2022-08-03

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