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 協議》,轉載必須註明作者和本文連結