感受不錯的開源項目,因此蒐集資料來細緻的剖析,幫助更多人儘快步入後臺系統的開發,其實後臺項目有兩個最基礎最重要的東西就是:權限驗證和安全性,關於VSCode是最近很火的編輯器不作過多說明,下面的參考資料有詳細講解前端
第三方參考資料
vue-cli
生成的環境變量(根目錄config
設置)有三個環境:development,testing,production,config 目錄結構以下所示vue-cli 默認只提供了dev和prod兩種環境。但其實正真的開發流程可能還會多一個sit或者stage環境,就是所謂的測試環境和預發佈環境。因此咱們就要簡單的修改一下代碼。其實很簡單就是設置不一樣的環境變量vue
"build:prod": "NODE_ENV=production node build/build.js", "build:sit": "NODE_ENV=sit node build/build.js",
以後在代碼裏自行判斷,想幹就幹啥node
var env = process.env.NODE_ENV === 'production' ? config.build.prodEnv : config.build.sitEnv
建議使用npm install --registry=https://registry.npm.taobao.org安裝依賴包使用cnpm install或者update 它的包是一個link,會有各類詭異的bug
添加請求、響應攔截器,@/_extends/ui,在_extends中定義公共彈框以及進度條經過index向外提供方法接口
import axios from 'axios' import _config from '@/_config' import $ui from '@/_extends/ui' // import qs from 'qs' const instance = axios.create({ baseURL: _config.apiBaseUrl, // api的base_url timeout: 10000 // 請求超時時間 // transformRequest: data => qs.stringify(data) }) // request攔截器 instance.interceptors.request.use( e => { e.method = _config.isMockTest ? 'GET' : e.method e.url = _config.suffix ? e.url + _config.suffix : e.url e.params = e.params || {} e.headers = e.headers || {} if (localStorage.token) { e.headers['Authorization'] = localStorage.token //後端會驗證每個涉及請求的操做,驗證其是否有該操做的權限, //每個後臺的請求無論是 get 仍是 post 都會讓前端在請求 //header裏面攜帶用戶的 token,後端會根據該 //token 來驗證用戶是否有權限執行該操做。 } return e }, error => ({ status: 0, msg: error.message }) ) // respone攔截器 instance.interceptors.response.use( response => { const resp = response.data if (resp && resp.status === 0 && resp.msg) { $ui.pages.warn(resp.msg) } if (response.status === 200) { return resp } return response }, error => { const err = { status: 0, msg: '服務器異常' } if ( error.message && (error.message.indexOf('403') > -1 || error.message.indexOf('401') > -1) ) { err.msg = '權限校驗失敗,請從新登陸' } $ui.pages.warn(err.msg) console.log('err' + error) // for debug return Promise.reject(err) } ) export default instance
用戶登陸成功以後,咱們會在全局鉤子router.beforeEach中攔截路由,判斷是否已得到token,在得到token以後咱們就要去獲取用戶的基本信息了
scrollBehavior,前端路由切換新路由想要頁面滾動到頂部
import Vue from 'vue' import Router from 'vue-router' import { routes } from './routes' import logic from './logic' Vue.use(Router) const router = new Router({ scrollBehavior(to, from, savedPosition) { if (savedPosition) return savedPosition const position = {} if (to.hash) { position.selector = to.hash } position.x = 0 position.y = 0 return position }, routes }) router.beforeEach(logic.beforeEach) router.afterEach(logic.afterEach) export default router