摘要:線上部署也不復(fù)雜,以為例把監(jiān)聽默認(rèn)端口,定向文件。然后,我們以此為例大概講述此項(xiàng)目的前后端交互方式和一些技術(shù)選型吧。前端按照默認(rèn)配置是,后端微服務(wù)的做法是。登錄的邏輯很簡單,先做驗(yàn)證,發(fā)送登陸請求,執(zhí)行回調(diào)。
1. 寫在前面
應(yīng)小鮮肉@大叔一枝花之邀,幫他完成他的大作spring-boot + redis + nginx(其實(shí)是入門level)的博客系統(tǒng),前端部分就是我來寫的,先簡單介紹下前端技術(shù)選型:vue-cli 的常用腳手架;iview的UI框架(表單驗(yàn)證和后臺dashboard風(fēng)格很贊);一些簡單的庫吧比如 moment.js,以及quill-editor這種富文本編輯器等..
2.主要功能登錄、登出
博客CRUD(后臺dashboard)
展示頁:主頁、歸檔、分類、關(guān)于等
2.1 Vue-cli很多博客和教程都寫的很詳細(xì)了,入門的朋友建議從官方文檔 看起。
這里簡單看看file tree吧
package 各個(gè)依賴項(xiàng)版本
"dependencies": { "axios": "^0.17.1", "iview": "^2.7.3", "moment": "^2.19.2", "querystring": "^0.2.0", "vue": "^2.5.2", "vue-quill-editor": "^2.3.3", "vue-router": "^3.0.1", "vuex": "^3.0.1" },
通過vue-cli 中webpack構(gòu)建成功后,簡單先把開發(fā)環(huán)境跑起來吧,默認(rèn)端口8080
webpack 配置大概講一下
dev{ assetsSubDirectory: "static", assetsPublicPath: "/", host: "0.0.0.0", // 默認(rèn)是localhost,改成0.0.0.0為了在手機(jī)訪問操作 port: 8080, // autoOpenBrowser: false,//自動打開瀏覽器,有點(diǎn)煩 errorOverlay: true, notifyOnErrors: true, ... //其他暫時(shí)先按默認(rèn)的來 }
跨域配置等下再說。
dev 差不多了,來看看build。
執(zhí)行
npm run build
文件根目錄下的dist就是webpack打包好的spa項(xiàng)目了,打開一般就是個(gè)index.html和其他靜態(tài)資源文件。
注意:大多數(shù)情況,部署至線上時(shí),只需要把dist這個(gè)文件發(fā)布(distribution)
技術(shù)選擇就太多了,tomcat弄弄也行,nginx也罷(總之和后端溝通),你自己要測試這個(gè)文件可以推薦一個(gè)小插件吧chrome extensions市場里去找一個(gè)叫"200 ok"的小插件。
即插即用。
線上部署也不復(fù)雜,以nginx為例
把監(jiān)聽默認(rèn)端口80,定向dist文件。
server { listen 80; server_name localhost; location ~ .*.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|ttf|woff|woff2|zip|css|eot|woff|tff|svg|map)$ { root /CoolBlog/front-end/cool-admin/dist; } }
好了dev環(huán)境,測試環(huán)境,線上環(huán)境,基本都能用了。來說說開發(fā)時(shí)具體功能及問題吧
2.2 登錄先寫個(gè)登錄form吧,樣式自擬。
然后,我們以此為例大概講述此項(xiàng)目的前后端交互方式和一些技術(shù)選型吧。
大叔一枝花給我的api大約是這樣的:
一次簡單的get請求,這里無論你是吧spring部署在自己本地還是隔壁某ip下的這個(gè)接口,都是跨域的。
(前端dev按照默認(rèn)配置是8080,后端微服務(wù)的做法是far away form front end。所以都必須面對跨域問題。)
dev下最簡單的方法是這樣的。
在webpack中配置中間件 proxyTable
教程里也比較詳細(xì)了,大概思路就是自己定義一個(gè)全局字符串pattern:" /api/** "去定向于你的tageturl。
注意:
pathRewrite: { "^/api": "" //為空就行 }
接著來談?wù)刟jax請求。
package.json里也有看到選的是 axios這個(gè)庫??傮w來說,配置簡單、功能齊全。
登錄的邏輯很簡單,先做驗(yàn)證,發(fā)送登陸請求,執(zhí)行回調(diào)。
表單驗(yàn)證的庫就不推薦了,iview用的是async-validate. 示例中能滿足大部分的需求了。自己寫的話,原則圍繞著:提示友好、驗(yàn)證精確、ui規(guī)整。
簡單的get請求
this.$axios.get("/api/ajaxLogin", { params: {name: name, password: password} }) .then(function(response){ // 請執(zhí)行你回調(diào)操作 )}
登錄api中回調(diào)success都要返回一個(gè)token,至于token的用途一般是作為一個(gè)令牌保存于瀏覽器的storage或者cookie,保障加密性和安全性。
處理token我們可以使用 vuex 啦,也算是個(gè)入門學(xué)習(xí)。
先看file tree吧
store ├── index.js # 我們組裝模塊并導(dǎo)出 store 的地方 ├── actions.js # 根級別的 action ├── mutations.js # 根級別的 mutation └── types.js
關(guān)于index.js主要來定義state,以及action,mutation,type的整合處理
const state = { token: window.localStorage.getItem("token"),//我存localStorage,自己看需求吧 userid: window.localStorage.getItem("userId") }
mutations.js 簡單來說是用來更改state的,不過不能直接調(diào)用,一般是通過type中定義常量方法來改變(commit),異步改變狀態(tài)用action
//type.js export const LOGIN = "LOGIN" export const LOGOUT = "LOGOUT" //mutations.js const mutations = { [types.LOGIN]: (state, data) => { // 更改token的值 state.token = data window.localStorage.setItem("token", data) }, [types.LOGOUT]: (state) => { // 登出時(shí)清除token state.token = null window.localStorage.removeItem("token") } //action.js userLogin ({ commit }, data) { commit(types.LOGIN, data) // console.log(data) }, userLogout ({ commit }) { commit(types.LOGOUT) },
store中token定義好了,這樣我們就能全局使用了。
例如:在登錄axios的回調(diào)中
this.$store.dispatch("userLogin", token) //異步 // this.$store.commit(types.LOGIN, token) 同步
這樣token就存到localStorage里了,當(dāng)然登出同理咯。
然后你還可以加點(diǎn)動畫呀提示啊anyway 就是后期優(yōu)化的事情了。
好了今天先到這里,以后慢慢來,項(xiàng)目碰到的一些坑都會更新上來。
有關(guān)java后端的配置和一些技術(shù)參考可以見 @大叔一枝花
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/92168.html
摘要:簡介本篇文章是容器源碼分析系列文章的最后一篇文章,本篇文章所分析的對象是方法,該方法用于對已完成屬性填充的做最后的初始化工作。后置處理器是拓展點(diǎn)之一,通過實(shí)現(xiàn)后置處理器接口,我們就可以插手的初始化過程。 1. 簡介 本篇文章是Spring IOC 容器源碼分析系列文章的最后一篇文章,本篇文章所分析的對象是 initializeBean 方法,該方法用于對已完成屬性填充的 bean 做最...
摘要:然后類似一樣我的命名是可以在頁面的任何地方使用,如果你對具體的實(shí)現(xiàn)方法有興趣,歡迎點(diǎn)擊本文結(jié)尾的鏈接,去我的倉庫上查看。 前言 最近收到一個(gè)這樣的需求,要求做一個(gè)基于 vue 和 element-ui 的通用后臺框架頁,具體要求如下: 要求通用性高,需要在后期四十多個(gè)子項(xiàng)目中使用,所以大部分地方都做成可配置的. 要求做成腳手架的形式.可以 npm 安裝 要求實(shí)現(xiàn)多頁簽,并且可以通過瀏...
摘要:然后類似一樣我的命名是可以在頁面的任何地方使用,如果你對具體的實(shí)現(xiàn)方法有興趣,歡迎點(diǎn)擊本文結(jié)尾的鏈接,去我的倉庫上查看。 前言 最近收到一個(gè)這樣的需求,要求做一個(gè)基于 vue 和 element-ui 的通用后臺框架頁,具體要求如下: 要求通用性高,需要在后期四十多個(gè)子項(xiàng)目中使用,所以大部分地方都做成可配置的. 要求做成腳手架的形式.可以 npm 安裝 要求實(shí)現(xiàn)多頁簽,并且可以通過瀏...
摘要:時(shí)間時(shí)間時(shí)間每一份有限的時(shí)間里都飽含無限的價(jià)值需要非常珍惜開發(fā)環(huán)境需要的信息官方手冊,一款工具,具體內(nèi)容請移步官方手冊官方手冊,一刻代碼包管理工具,具體內(nèi)容請移步官方手冊官方安裝手冊,前端框架瀏覽器擴(kuò)展,用于調(diào)試應(yīng)用程序,下一篇進(jìn)行詳細(xì)介 ArthurSlog SLog-6 Year·1 Guangzhou·China July 13th 2018 showImg(https://...
摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們設(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡單的頁面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...
閱讀 1599·2021-11-16 11:44
閱讀 7492·2021-09-22 15:00
閱讀 4525·2021-09-02 10:20
閱讀 1955·2021-08-27 16:20
閱讀 2402·2019-08-26 14:00
閱讀 2916·2019-08-26 11:44
閱讀 1647·2019-08-23 18:33
閱讀 1878·2019-08-22 17:28