QBasic快速開發(fā)框架

簡介

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

開發(fā)原則

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

技術選型

1、后端

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

2、前端

  • Vue+jQuery:基礎JS框架。
  • Element UI:餓了嗎前端團隊開源的Vue組件庫,CSS苦手的福音。
  • Bootstrap:UI框架。
  • AdminLTE:Bootstrap模板。
  • Font Awesome:圖標字體。
  • CKEditor4:功能強大的富文本編輯器。
  • moment:前端日期處理工具包。

后臺管理功能概述

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

接入說明

  1. 后臺管理站端口8000,管理員賬號:admin/123456,測試賬號:test/123456
  2. 后臺管理站接口文檔地址/docs,需要先登錄
  3. 業(yè)務日志不需要寫數(shù)據(jù)庫的API,請在Controller方法上添加DbLogIgnore注解
  4. RESTFUL API接口規(guī)范

請求參數(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個字符")
    private String pType;

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

    @ApiModelProperty("字典value")
    @NotEmpty(message = "字典value不能為空")
    @Length(max = 50, message = "字典value不能超過50個字符")
    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 響應狀態(tài)碼
msg String 響應提示信息
result Object 響應結果

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

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

相關閱讀更多精彩內容

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

友情鏈接更多精彩內容