QBasic快速開發(fā)框架

簡(jiǎn)介

QBasic快速開發(fā)框架,Q是Quick的縮寫,QBasic就是快速基礎(chǔ)之意。QBasic的開發(fā)初衷是為開發(fā)人員提供一款小而美,輕量而又靈活的項(xiàng)目腳手架。QBasic對(duì)目前主流的一些前后端框架做了整合,提供了一個(gè)軟件項(xiàng)目必須要有的身份驗(yàn)證、權(quán)限校驗(yàn)、日志、緩存、全局異常處理、API接口文檔等基礎(chǔ)功能。來新項(xiàng)目了,開發(fā)人員不必再?gòu)念^開發(fā)這些基礎(chǔ)功能,直接從業(yè)務(wù)功能開始開發(fā),減少了大量的重復(fù)性工作。

開發(fā)原則

  • 編碼規(guī)范
    • 遵循阿里巴巴Java開發(fā)手冊(cè)。
  • 前后端職責(zé)分離
    • 后端代碼中沒有任何HTML代碼,視圖層不包含任何后端業(yè)務(wù)邏輯代碼。
    • 前端視圖層又做了職責(zé)分離,采用MVVM模式,將視圖UI和業(yè)務(wù)邏輯分開。
  • 輕量
    • 數(shù)據(jù)庫(kù)只有最基礎(chǔ)的表和字段。
    • 框架只實(shí)現(xiàn)了最基礎(chǔ)的功能。
    • 功能頁面前端只引用了Vue,jQuery,Element UI框架。
  • 代碼簡(jiǎn)潔
    • Controller層沒有異常捕獲,權(quán)限驗(yàn)證,請(qǐng)求參數(shù)檢驗(yàn),業(yè)務(wù)日志代碼,統(tǒng)一交給Aop切面處理,Controller層只有業(yè)務(wù)邏輯代碼。
    • 使用Java8新特性lambda表達(dá)式,stream流。
  • 性能優(yōu)化
    • 能在應(yīng)用服務(wù)器做的事,不交給數(shù)據(jù)庫(kù)做;能在客戶端做的事,不交給應(yīng)用服務(wù)器做。
    • 熱點(diǎn)數(shù)據(jù)做緩存,如用戶身份信息,權(quán)限列表做了緩存。
    • Bootstrap模板AdminLTE的CSS和JS代碼做了深度精簡(jiǎn),只保留了主頁框架頁面的部分,加快主頁渲染速度。

技術(shù)選型

1、后端

  • Java8:lambda表達(dá)式、stream流、optional可空類型等新特性。
  • Spring Boot:內(nèi)嵌式tomcat部署方便;約定大于配置,再不用繁瑣的XML配置。
  • Spring+Spring MVC+Mybatis:標(biāo)準(zhǔn)的web應(yīng)用三件套。
  • Apache Shiro:安全框架,處理身份認(rèn)證,授權(quán),會(huì)話管理等。
  • Thymeleaf:Spring官方推薦的模板引擎。
  • Druid:阿里巴巴開源的高性能數(shù)據(jù)庫(kù)連接池。
  • Ehcache:緩存框架。
  • slf4j+logback:日志框架。
  • Apache Commons Lang:常用工具包。
  • fastJSON:JSON處理工具包。
  • Joda-Time:日期處理工具包。
  • Swagger:API接口文檔自動(dòng)生成。

2、前端

  • Vue+jQuery:基礎(chǔ)JS框架。
  • Element UI:餓了嗎前端團(tuán)隊(duì)開源的Vue組件庫(kù),CSS苦手的福音。
  • Bootstrap:UI框架。
  • AdminLTE:Bootstrap模板。
  • Font Awesome:圖標(biāo)字體。
  • CKEditor4:功能強(qiáng)大的富文本編輯器。
  • moment:前端日期處理工具包。

后臺(tái)管理功能概述

  • 用戶登錄/登出
  • 權(quán)限校驗(yàn)
    • 用戶權(quán)限控制到按鈕級(jí)別
  • 系統(tǒng)管理
    • 用戶管理
    • 角色管理
    • 資源管理
    • 機(jī)構(gòu)管理
    • 數(shù)據(jù)字典
    • 系統(tǒng)配置
    • 定時(shí)任務(wù)
    • 數(shù)據(jù)集管理
  • 運(yùn)維工具
    • 數(shù)據(jù)查詢
    • 業(yè)務(wù)日志
    • 錯(cuò)誤日志
    • 應(yīng)用監(jiān)控
  • 內(nèi)容發(fā)布
    • 內(nèi)容管理
    • 欄目管理
    • 多級(jí)審核
    • 全文檢索
  • 文件存儲(chǔ)服務(wù)
    • 本地磁盤
    • 阿里云OSS服務(wù)
  • 工作流引擎
    • 流程分類
    • 流程定義
    • 流程配置
  • 示例代碼庫(kù)
    • 導(dǎo)出Word文檔
    • 導(dǎo)出Excel文檔
  • 全局異常處理
  • 全局日志記錄
  • 緩存
    • 用戶身份信息
    • 用戶權(quán)限信息
  • Controller層用戶請(qǐng)求、響應(yīng)參數(shù)封裝
  • 用戶請(qǐng)求參數(shù)校驗(yàn)
    • 前端、后端請(qǐng)求參數(shù)Double Check
  • 主頁框架頁
    • 菜單樹
    • 收縮側(cè)邊欄
    • 面包屑導(dǎo)航
    • 內(nèi)容頁高度自適應(yīng)
  • 錯(cuò)誤頁面
    • 400頁面
    • 401頁面
    • 404頁面
    • 500頁面
  • 檢查當(dāng)前用戶會(huì)話是否過期
    • 避免出現(xiàn)點(diǎn)擊菜單鏈接內(nèi)容頁嵌套登錄頁的情況
  • 公共HTML模板頁
  • API接口文檔
  • 代碼生成器,生成單表的增刪改查全套代碼

接入說明

  1. 后臺(tái)管理站端口8000,管理員賬號(hào):admin/123456,測(cè)試賬號(hào):test/123456
  2. 后臺(tái)管理站接口文檔地址/docs,需要先登錄
  3. 業(yè)務(wù)日志不需要寫數(shù)據(jù)庫(kù)的API,請(qǐng)?jiān)贑ontroller方法上添加DbLogIgnore注解
  4. RESTFUL API接口規(guī)范

請(qǐng)求參數(shù)示例

@ApiModel
public class EditParamReq extends BaseRequest {

    @NotNull(message = "pId不能為空")
    @Min(value = 1, message = "pId必須大于0")
    private Integer pId;

    @ApiModelProperty("字典類型")
    @NotEmpty(message = "字典類型不能為空")
    @Length(max = 50, message = "字典類型不能超過50個(gè)字符")
    private String pType;

    @ApiModelProperty("字典key")
    @NotEmpty(message = "字典key不能為空")
    @Length(max = 50, message = "字典key不能超過50個(gè)字符")
    private String pKey;

    @ApiModelProperty("字典value")
    @NotEmpty(message = "字典value不能為空")
    @Length(max = 50, message = "字典value不能超過50個(gè)字符")
    private String pValue;

    @ApiModelProperty("字典排序")
    @NotNull(message = "字典排序不能為空")
    @Range(min = 0, message = "字典排序不能小于0")
    private Integer sort;

    @ApiModelProperty("備注")
    private String remark;

    public Integer getpId() {
        return pId;
    }

    public void setpId(Integer pId) {
        this.pId = pId;
    }

    public String getpType() {
        return pType;
    }

    public void setpType(String pType) {
        this.pType = pType;
    }

    public String getpKey() {
        return pKey;
    }

    public void setpKey(String pKey) {
        this.pKey = pKey;
    }

    public String getpValue() {
        return pValue;
    }

    public void setpValue(String pValue) {
        this.pValue = pValue;
    }

    public Integer getSort() {
        return sort;
    }

    public void setSort(Integer sort) {
        this.sort = sort;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}

返回示例

  {
    "status": 200,
    "msg":"成功",
    "result": {
      ...
    }
  }

返回參數(shù)說明

參數(shù)名 類型 說明
status int 響應(yīng)狀態(tài)碼
msg String 響應(yīng)提示信息
result Object 響應(yīng)結(jié)果

status響應(yīng)狀態(tài)碼說明

狀態(tài)碼 說明
200 請(qǐng)求成功
400 接口請(qǐng)求參數(shù)不合法,比如手機(jī)號(hào)不合法
401 身份校驗(yàn)失敗
404 服務(wù)器找不到請(qǐng)求的API
500 系統(tǒng)異常,操作失敗,需要客戶端做容錯(cuò)處理
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 以下文章轉(zhuǎn)載自知乎,暗滅-京華九月秋近寒,浮沉半生影長(zhǎng)單. 暗滅 京華九月秋近寒,浮沉半生影長(zhǎng)單 10,850 人...
    ve追風(fēng)_685b閱讀 4,193評(píng)論 1 15
  • 轉(zhuǎn)自:[http://blog.csdn.net/liu88010988/article/details/5154...
    hackywit閱讀 6,296評(píng)論 0 26
  • 首先我要說明,下面的事是老人告訴我的,而且我也向一些當(dāng)事人求證過,當(dāng)然,如果你不相信,就當(dāng)這是一個(gè)故事吧。 那天,...
    客子不窮閱讀 414評(píng)論 2 2
  • 時(shí)間過得很快,2018年的第三個(gè)月結(jié)束了,總結(jié)一下吧!只有你不斷總結(jié),不斷反省,你才有可能去改變。 一、工作方面:...
    G192王朝云閱讀 282評(píng)論 0 1
  • 莫名,今天為朋友圈里大家為大學(xué)畢業(yè)十年聚會(huì)造勢(shì)而莫名的感慨,十年前,我在干什么呢,在哪里呢。 十年前,我還在蘭州,...
    小凍yy閱讀 359評(píng)論 0 2

友情鏈接更多精彩內(nèi)容