史上最快的后台搭建框架
如果你要問我說最快的后台搭建框架是什么,我會毫不猶豫的說,laravel-admin(https://laravel-admin.org/)。這個框架的作者是z-song,應該是騰訊公司的。它的官網寫着“在十分鍾內構建一個功能齊全的管理后台”。沒有誇張,就是這么虎。
搭建完成的例子如下:
具體如何使用查看官網就可以了。這里就說下它用到的幾個技術。
Pjax
這個框架左邊導航選擇后,右邊頁面刷新,使用的技術是Pjax。它解決的就是局部刷新頁面的功能。這個技術說白了就是Ajax請求返回的不是json,而是html,替換頁面上的局部界面。
Pjax在前端是有一個jquery的庫支持的,jquery.pjax.js。這個庫基本原理是使用window.history.pushState來配合ajax進行頁面刷新,並且重置頁面的上一步,下一步的操作。要達到的效果就是雖然我只使用ajax更新頁面的一個部分,但是我也能像進入新頁面一樣擁有瀏覽器點擊上一步回退到舊的頁面的功能。
這個pushState是h5的特性。所以瀏覽器必須要支持h5。
grid, form, tree
這三種結構,特別是前面兩種結構,是經常使用到的。grid和form使用的熟練與否就代表了我們能否很好使用這個框架了。
grid就是我們查看一個模型頁面的表單。它借用php的魔術方法,把所有要展示的字段都封裝成了方法。大致代碼如下:
return ReportTag::grid(function(Grid $grid) {
$grid->id("標簽id");
$grid->name("標簽名稱");
$grid->parent("父級id");
$grid->created_at("創建時間");
});
而form則是我們編輯/新建時候的表單。它則是以form表單的類型做方法:
return ReportTag::form(function (Form $form) {
$form->text('name', '標簽名字')->rules('required');
$form->text('parent', '父級id,如果自身就是父級,填0')->rules('required');
});
實際上,我在使用的過程中遇到不少額外的需求。算是碰上了一些高級用法把。當然文檔里面也都有,但是寫的不盡詳細。這里我記錄下這些不常見的用法。
form中有兩個下拉框聯動下拉,即我下拉第一個select,第二個select或者multiselect會自動變化選項
$form = ReportTagArea::form(function (Form $form) use ($tags, $areas) {
$form->select('area_id', '區域')->options($areas)->rules('required')->load("periods", "/tag/periods?q=[]");
$form->multipleSelect("periods", "時段")->rules("required");
});
上面例子就是我選擇了區域選項的時候,調用ajax接口,/tag/periods?q=[area_id] 來填充periods這個時段選擇框。(官網只說了聯動選擇可以聯動兩個select,我試了下,可以聯動select和multipleSelect)
grid 在每一列增加一個行為
$grid->actions(function ($actions) {
// 跳轉到路口規則列表
$actions->append('<a href="/tag/junctions?area_id='. $actions->row->area_id .'"><i class="fa fa-eye"></i></a>');
});
要在頁面上增加自定義的ajax如何做?
使用 Admin::script方法
class FullController extends Controller
{
private function getjs() {
return "alert(11)";
}
public function index () {
Admin::script($this->getjs());
return Admin::content(function (Content $content) {
....
}
}
}
總結
關於管理后台,快速搭建快速相應是王道,有屎以來,我真心沒有見過比laravel-admin能更快搭建管理后台的框架了。如果說laravel是個大斧子,laravel-admin就是一個鑲金嵌玉的斧子,只要你熟練掌握了使用方法,就可以很方便完成你的需求。當然,如果有的bt需求是這個框架沒有想到的,那么你可能花費的時間就會比平時更多。但是再強調一下,這個框架適合做的是管理后台,一般管理后台的需求,都是可以和PM進行pk的,不是么。
參考
https://www.fanhaobai.com/2017/07/pjax.html
https://www.renfei.org/blog/html5-introduction-3-history-api.html