import Vue from 'vue'; import $ from 'webpack-zepto'; import VueRouter from 'vue-router'; import filters from './filters'; import routes from './routers'; import Alert from './libs/alert'; import store from './vuex/user'; import FastClick from 'fastclick'; Vue.use(VueRouter); Vue.use(Alert);
routes ,Vue, VueRouter,store 都是跟vue vuex 和vuerouter 有關的 $是爲了進行相似jquery的操做引進的庫 FastClick解決移動端點擊300ms延遲的問題 直接FastClick.attach(document.body) alert是當有error時電腦彈出的信息的設置 javascript
const router = new VueRouter({ mode: 'history', routes })
router.beforeEach((to, from, next) => {
if (to.matched.some((record) => {
return record.meta.requiresAuth
}) {
if (store.state.userInfo.userId) {
next()
} else {
next({
path: '/login',
query: {redirect: to.fullpath}
})
}
}else {
next()
}
})
router的初始化 mode爲history 當路徑改變時不會從新加載 router.beforeEach((to, from, next) {})實現的邏輯是 當record.meta.requiresAuth爲true時 若是已經登錄 直接next() vue
若是沒登錄 去登錄頁面 爲false時直接登錄java
// 若是sessionStorage 儲存了user 則經過vuex 賦值給userInfo if (window.sessionStorage.user) { store.dispatch('setUserInfo', JSON.parse(window.sessionStorage.user)); }
利用sessionStorage存儲登錄信息 經過store執行setUserInfo action 分發用戶信息 jquery