goframe重寫FastAdmin后端實(shí)現(xiàn)實(shí)例詳解
引言
時間大約是三年前,當(dāng)時我所在的團(tuán)隊(duì)是最早接觸 PHP 的,而團(tuán)隊(duì)其他成員都是用 Java。由于某些項(xiàng)目原因,我們決定全面轉(zhuǎn)向使用 GO 進(jìn)行開發(fā)。在當(dāng)時,我們并不想花太多時間去折騰 REACT 和 VUE 這些前端框架,我們更傾向于使用 jQuery 來開發(fā),因?yàn)槲覀兿矚g它的快感。
于是我想到了一個基于 ThinkPHP 和 Bootstrap 的快速后臺開發(fā)框架,叫做 FastAdmin。我之前使用過它做過項(xiàng)目,發(fā)現(xiàn)速度很快,而且學(xué)習(xí)成本也很低。于是,我們決定將原本用 ThinkPHP 寫的后端代碼用 Goframe 重新實(shí)現(xiàn)了一遍,并且使用 FastAdmin 的前端規(guī)范和框架。我們內(nèi)部把它叫做 FastGoAdmin。
原本我想花點(diǎn)時間整理一下代碼,將業(yè)務(wù)邏輯和框架分離,然后開源分享出來。但由于一直忙于產(chǎn)品開發(fā),沒有時間進(jìn)行整理。今天我先在這里留個記錄,如果有很多人關(guān)注的話,我就會花時間整理代碼并開源出來。另外,我也要感謝 FastAdmin 的作者,他提供了一個簡單易用的設(shè)計思想。
FastGoAdmin 框架
FastGoAdmin 框架支持一鍵生成 CRUD,根據(jù)數(shù)據(jù)表可以自動產(chǎn)生控制器、模型、視圖、JS、語言包、菜單、回收站等。
FastGoAdmin 的目標(biāo)是為開發(fā)者提供一個能夠單獨(dú)完成前后端開發(fā)的能力,約定優(yōu)于配置,配置優(yōu)于開發(fā),開發(fā)優(yōu)于重復(fù)。
主要特性
包括:
- 基于 Auth 驗(yàn)證的權(quán)限管理系統(tǒng)
- 一鍵生成 CRUD
- 支持無限級父子級權(quán)限繼承,父級管理員可以任意增刪改子級管理員并設(shè)置權(quán)限
- 支持單管理員多角色
- 支持用戶部門管理
- 支持?jǐn)?shù)據(jù)權(quán)限,可以對管理員管轄的數(shù)據(jù)進(jìn)行權(quán)限限制
- 有插件應(yīng)用市場,可以進(jìn)行插件化開發(fā),實(shí)現(xiàn)即插即用的應(yīng)用
- 支持多語言,內(nèi)置簡體中文、繁體中文和英文
- 支持多模塊的開發(fā)
我們修改后的功能界面
我們把詳細(xì)頁面修改了一下
添加了插件管理功能
下面的部份代碼
//通用的查詢、新增、修改、刪除、查看 功能,由代碼產(chǎn)生后自帶CURD界面 func (a *openAuth) List(ctx context.Context, req *libModel.ApiPageReq) (total int, list []*entity.OpenAuth, err error) { boAttachment := &libService.BackendOption{Model: dao.OpenAuth.Table(), Ctx: ctx, DataLimit: true} total, err = libService.NewBackend(boAttachment).Index(req, &list) return } func (a *openAuth) Add(ctx context.Context, req *model.OpenAuthRow) (res *libModel.AdminApiRes, err error) { id, err := libService.NewBackend(&libService.BackendOption{Model: dao.OpenAuth.Table(), Ctx: ctx, DataLimit: true}).Add() if err != nil { return nil, gerror.New("添加失敗") } res = &libModel.AdminApiRes{ Count: 1, Id: id, } return } func (a *openAuth) Edit(ctx context.Context, req *model.OpenAuthRow, id uint64) (res *libModel.AdminApiRes, err error) { count, err := libService.NewBackend(&libService.BackendOption{Model: dao.OpenAuth.Table(), Ctx: ctx, DataLimit: true}).Edit(dao.OpenAuth.Columns().Id, id) if err != nil { return nil, gerror.New("修改失敗") } res = &libModel.AdminApiRes{ Count: count, } return } func (a *openAuth) Del(ctx context.Context, req *libModel.ApiDelReq) (res *libModel.AdminApiRes, err error) { count, err := libService.NewBackend(&libService.BackendOption{Model: dao.OpenAuth.Table(), Ctx: ctx, DataLimit: true}).Del(dao.OpenAuth.Columns().Id, gstr.Split(req.Ids, ",")) if err != nil { return nil, gerror.New("刪除失敗") } res = &libModel.AdminApiRes{ Count: count, } return } func (a *openAuth) GetDetailById(ctx context.Context, id uint64) (row *entity.OpenAuth, err error) { err = libService.NewBackend(&libService.BackendOption{Model: dao.OpenAuth.Table(), Ctx: ctx, DataLimit: true}).GetDetailById(id, &row) return }
以上就是goframe重寫FastAdmin后端實(shí)現(xiàn)實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于goframe重寫FastAdmin后端的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Go語言循環(huán)遍歷含有中文的字符串的方法小結(jié)
這篇文章主要介紹了Go語言循環(huán)遍歷含有中文的字符串的幾種方法,文章通過代碼示例講解的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴跟著小編一起來看看吧2023-07-07在 Golang 中實(shí)現(xiàn) Cache::remember 方法詳解
這篇文章主要介紹了在 Golang 中實(shí)現(xiàn) Cache::remember 方法詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03Golang中HTTP服務(wù)的分析與設(shè)計詳解
這篇文章主要介紹了Golang中HTTP服務(wù)的分析與設(shè)計,HTTP服務(wù)是實(shí)現(xiàn)Web應(yīng)用程序的重要組成部分,為了實(shí)現(xiàn)高效可擴(kuò)展的Web應(yīng)用程序,需要對HTTP服務(wù)進(jìn)行分析與設(shè)計,需要的朋友可以參考下2023-05-05