前後端分離開發是當今開發的主流。本篇文章從零開始,一步步使用SpringBoot結合Vue來實現日常開發中最常見的登入功能,以及登入之後對使用者的管理功能。透過這個例子,可以快速入門SpringBoot+Vue前後端分離的開發。
1、前後端分離簡介
在這裡首先簡單說明一下什麼是前後端分離和單頁式應用:前後端分離 的核心思想是前端頁面透過 ajax 呼叫後端的 restuful api 進行資料互動,而 單頁面應用(single page web application,SPA),就是隻有一個頁面,並在使用者與應用程式互動時動態更新該頁面的 Web 應用程式。
2、示例所用技術簡介
簡單說明以下本示例中所用到的技術,如圖所示:
後端
SpringBoot:SpringBoot是當前最流行的Java後端框架。可以簡單地看成簡化了的、按照約定開發的SSM(H), 大大提升了開發速度。官網地址:https://spring.io/projects/spring-bootMybatisPlus: MyBatis-Plus(簡稱 MP)是一個 MyBatis的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。官網地址:https://mybatis.plus/前端:
Vue :Vue 是一套用於構建使用者介面的漸進式框架。儘管Vue3已經發布,但是至少一段時間內主流應用還是vue2.x,所以示例裡還是採用Vue2.x版本。官網地址:https://cn.vuejs.org/ElementUI: ElementUI 是目前國內最流行的Vue UI框架。元件豐富,樣式眾多,也比較符合大眾審美。雖然一度傳出停止維護更新的傳聞,但是隨著Vue3的釋出,官方也Beta了適配Vue3的ElementPlus。官網地址:https://element.eleme.cn/#/zh-CN資料庫:
MySQL:MySQL是一個流行的開源關係型資料庫。官網地址:https://www.mysql.com/上面已經簡單介紹了本例項用到的技術,在開始本例項之前,最好能對以上技術具備一定程度的掌握。
一、環境準備1.1、安裝Node.js前端專案使用 veu-cli腳手架,vue-cli需要透過npm安裝,是而 npm 是整合在 Node.js 中的,所以第一步我們需要安裝 Node.js,訪問官網 https://nodejs.org/en/,首頁即可下載。
下載完成後執行安裝包,一路下一步就行。然後在 cmd 中輸入 node -v,檢查是否安裝成功。
如圖,出現了版本號(根據下載時候的版本確定),說明已經安裝成功了。同時,npm 包也已經安裝成功,可以輸入 npm -v 檢視版本號
1.2、配置NPM源NPM原始的源是在國外的伺服器上,下載東西比較慢。
可以透過兩種方式來提升下載速度。
下載時指定源//本次從淘寶倉庫源下載 npm --registry=https://registry.npm.taobao.org install配置源為淘寶倉庫//設定淘寶源 npm config set registry https://registry.npm.taobao.org也可以安裝 cnpm ,但是使用中可能會遇到一些問題。
1.3、安裝vue-cli腳手架使用如下命令安裝 vue-cli 腳手架:
npm install -g vue-cli
注意此種方式安裝的是 2.x 版本的 Vue CLI,最新版本需要透過 npm install -g @vue/cli 安裝。新版本可以使用圖形化介面初始化專案,並加入了專案健康監控等內容。
1.4、VS Code前端的開發工具採用的當下最流行的前端開發工具 VS code。
下載對應的版本,一步步安裝即可。安裝之後,初始介面如下:
VS Code安裝後,我們一般還需要搜尋安裝一些所需要的外掛輔助開發。安裝外掛很簡單,在搜尋面板中查詢到後,直接安裝即可。
二、專案搭建2、後端專案搭建2.1、後端專案建立後端專案建立如下:
開啟Idea, New Project ,選擇 Spring Intializr填入專案的相關資訊SpringBoot版本選擇了 2.3.8 , 選擇了web 和 MySQL驅動依賴建立完成的專案2.3.2、資料庫建立資料庫設計非常簡單,只有一張表。
2.3.3、相關程式碼MP提供了程式碼生成器的功能,可以按模組生成Controller、Service、Mapper、實體類的程式碼。在資料庫表比較多的情況下,能提升開發效率。官網給出了一個Demo,有興趣的可以自行檢視。
實體類/** * @Author: 三分惡 * @Date: 2021/1/17 * @Description: 使用者實體類 **/@TableName(value = "user")public class User { @TableId(type = IdType.AUTO) private Integer id; private String loginName; private String userName; private String password; private String sex; private String email; private String address; //省略getter、setter等}
Mapper介面:繼承BaseMapper即可/** * @Author: 三分惡 * @Date: 2021/1/17 * @Description: TODO **/public interface UserMapper extends BaseMapper<User> {}
OK,到此單表的增刪改查功能已經完成了,是不是很簡單。
2、後端開發2.1、統一結果封裝這裡我們建立了一個 Result 類,用於非同步統一返回的結果封裝。一般來說,結果裡面有幾個要素必要的
是否成功,可用 code 表示(如 200 表示成功,400 表示異常)結果訊息結果資料/** * @Author: 三分惡 * @Date: 2021/1/17 * @Description: 統一結果封裝 **/public class Result { //相應碼 private Integer code; //資訊 private String message; //返回資料 private Object data; //省略getter、setter、構造方法}
實際上由於響應碼是固定的,code 屬性應該是一個列舉值,這裡作了一些簡化。
2.2、登入業務實體類為了接收前端登入的資料,我們這裡建立了一個登入用的業務實體類:
public class LoginDTO { private String loginName; private String password; //省略getter、setter}
啟動後端專案:
訪問登入介面,效果如下:
這樣一個簡答的登入就完成了,接下來,我們會對這個登入進一步完善。
四、登入功能完善前面雖然實現了登入,但只是一個簡單的登入跳轉,實際上並不能對使用者的登入狀態進行判別,接下來我們進一步完善登入功能。
在最後一頁可以看到我們新增的使用者:
效果:
六、總結透過這個示例,相信大家已經對 SpringBoot+Vue 前後端分離開發有了一個初步的掌握。
當然,由於這個示例並不是一個完整的專案,所以技術上和功能上都非常潦草
有興趣的同學可以進一步地去擴充套件和完善這個示例。