SpringBoot + Vue 后臺管理系統(tǒng)(一):創(chuàng)建項目

服務(wù)端接口技術(shù)

  • SpringBoot + Shiro + mybatis-plus + MySql + Redis

前端技術(shù)框架

  • VUE + ElementUI + TypeScript
    具體代碼已經(jīng)上傳GitHub。vue-webstudy-jpa

服務(wù)接口

創(chuàng)建maven多模塊項目丐箩,分別創(chuàng)建一下子項目


項目文檔結(jié)構(gòu)圖
  • domain項目主要就是實體和數(shù)據(jù)操作層
    主要就是配置數(shù)據(jù)源等信息异袄。
  • server項目業(yè)務(wù)服務(wù)層
  • vueweb項目控制層
    主要shiro的配置
    參考: SpringBoot 集成Shiro 注:數(shù)據(jù)操作層JPA換成MyBatis-Plus春宣。

前端項目搭建

直接使用的vue-cli 3.0版本腳手架創(chuàng)建項目即可 炫贤。具體步驟百度卑雁。

文檔結(jié)構(gòu)

編輯器使用的是WebStorm
執(zhí)行npm server 即可訪問初始頁面了跌榔。
注: vue.config.js 這個文件是手動新增的地熄。之后就集成各種第三方庫即可了

  • ElementUI
  1. npm i element-ui -S 安裝想要集成的庫。
  2. main.ts引入 使用
  import ElementUI from 'element-ui';
  import 'element-ui/lib/theme-chalk/index.css';
  import 'element-ui/lib/theme-chalk/fonts/element-icons.ttf';
  import 'element-ui/lib/theme-chalk/fonts/element-icons.woff';
  # 也可以單獨引入某個組件
  # import {Message} from 'element-ui'
  
  Vue.use(ElementUI);
  1. Login.vue 使用
ElementUI使用示例
  • 使用axios訪問接口
  1. 配置axios-->axios.tool.ts

     import axios from 'axios'
     import {Message} from 'element-ui'
     
     axios.defaults.baseURL = "/api/";  // 默認地址
     //axios.defaults.baseURL = "http://www.ping-w.com/vueweb";  // 默認地址
     //axios.defaults.withCredentials = true; // 準許攜帶cookie信息
     //整理數(shù)據(jù)
     axios.defaults.transformRequest = function (data) {
         data = JSON.stringify(data);
         return data;
     };
     
     // 路由請求攔截
     // http request 攔截器
     axios.interceptors.request.use(config => {
             config.headers['Accept'] = 'application/json';
             config.headers['Content-Type'] = 'application/json;charset=UTF-8';
             //判斷是否存在token窘行,如果存在的話饥追,則每個http header都加上token
             const token = localStorage.getItem("token");
             if(token != undefined){
                 config.headers['Authorization'] = token;
             }
             return config;
         },
         error => {
             return Promise.reject(error.response);
         });
     
     // 路由響應(yīng)攔截
     // http response 攔截器
     axios.interceptors.response.use(resp=> {
         if (resp.status && resp.status == 200 && resp.data.code != '0') {
             Message.error({message: resp.data.message})
             if (resp.data.code == '20301') {
                 // Token過期
                 setTimeout(() => {
                     window.location.href = location.origin + location.pathname;
                 }, 1000);
             }
             return Promise.resolve(resp);
         }
         return resp.data;
     }, err=> {
         if(err.response == undefined){
             Message.error({message: err.message})
         }else{
             if (err.response.status == 504||err.response.status == 404) {
                 Message.error({message: '服務(wù)器被吃了⊙﹏⊙∥'});
             } else if (err.response.status == 403) {
                 Message.error({message: '權(quán)限不足,請聯(lián)系管理員!'});
             }else {
                 Message.error({message: '未知錯誤!'});
             }
         }
         return Promise.resolve(err);
     })
     export default axios;
    
  2. main.ts 引入

  import axios from "./config/axios.tool";
  import vueAxios from  "vue-axios";
  
  Vue.use(vueAxios, axios);
  1. Login.vue 使用--登錄時調(diào)用接口

    const _this = this;
    this.loading = true;
    localStorage.clear();
    _this.axios.a
    // 登錄
    _this.axios.post('/login',, _this.user)
    .then(resp => {
       _this.loading = false;
       // 設(shè)置全局的用戶信息
       localStorage.setItem("token", resp.data.token);
       localStorage.setItem("username", resp.data.user.name)
       _this.$router.replace({path: '/home'});
    })
    

注意問題:
1: 開發(fā)過程中,訪問接口出現(xiàn)跨域問題罐盔。lcoalhost:8080 - localhost:10000?
2: 打包部署后js和css等文件404(NGINX添加了項目名)

處理方式 vue.config.js

    module.exports = {
        runtimeCompiler: true,
        // 設(shè)置打包文件相對路徑-項目名后綴 http://www.ping-w.com/webview/
        publicPath: '/webview/',    
        devServer: {
            port: 8080,  // 知道端口號
            //開發(fā)過程中服務(wù)跨域問題
            proxy: {
                '/api': { 
                    target: 'http://localhost:10000/vueweb/', //對應(yīng)自己的接口
                    changeOrigin: true,
                    ws: true,
                    pathRewrite: {
                        '^/api': ''
                    }
                }
            }
        },
    }

創(chuàng)建項目完成但绕! 示例項目. 服務(wù)器不續(xù)費了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捏顺,更是在濱河造成了極大的恐慌六孵,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幅骄,死亡現(xiàn)場離奇詭異狸臣,居然都是意外死亡,警方通過查閱死者的電腦和手機昌执,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诈泼,“玉大人懂拾,你說我怎么就攤上這事☆泶铮” “怎么了岖赋?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瓮孙。 經(jīng)常有香客問我唐断,道長,這世上最難降的妖魔是什么杭抠? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任脸甘,我火速辦了婚禮,結(jié)果婚禮上偏灿,老公的妹妹穿的比我還像新娘丹诀。我一直安慰自己魄咕,他們只是感情好辉浦,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布兜辞。 她就那樣靜靜地躺著路翻,像睡著了一般做盅。 火紅的嫁衣襯著肌膚如雪敌蚜。 梳的紋絲不亂的頭發(fā)上灵再,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天边翁,我揣著相機與錄音啼肩,去河邊找鬼橄妆。 笑死,一個胖子當著我的面吹牛祈坠,可吹牛的內(nèi)容都是我干的呼畸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼颁虐,長吁一口氣:“原來是場噩夢啊……” “哼蛮原!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起另绩,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤儒陨,失蹤者是張志新(化名)和其女友劉穎花嘶,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹦漠,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡椭员,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了笛园。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隘击。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖研铆,靈堂內(nèi)的尸體忽然破棺而出埋同,到底是詐尸還是另有隱情,我是刑警寧澤棵红,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布凶赁,位于F島的核電站,受9級特大地震影響逆甜,放射性物質(zhì)發(fā)生泄漏虱肄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一交煞、第九天 我趴在偏房一處隱蔽的房頂上張望咏窿。 院中可真熱鬧,春花似錦素征、人聲如沸翰灾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纸淮。三九已至,卻和暖如春亚享,著一層夾襖步出監(jiān)牢的瞬間咽块,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工欺税, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侈沪,地道東北人。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓晚凿,卻偏偏與公主長得像亭罪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子歼秽,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349