NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
[TOC] ### 1. 项目结构 ![](https://img.kancloud.cn/d3/dd/d3dd8865a2752ca372670045ff6a61ab_280x184.png) ### 2. app-config.js , user.js (token) ~~~ const appConfig = { // 命名空间 namespaced: true, state: { data: '' }, mutations: { SET_APP_CONFIG(state, data) { state.data = data } } } export default appConfig ~~~ ~~~ // user.js import { login, logout } from '@/api/login' import { setToken } from '@/utils/token' const user = { // 命名空间 namespaced: true, state: { token: '' }, mutations: { SET_TOKEN(state, token) { state.token = token } }, actions: { Login({ commit }, userInfo) { const loginName = userInfo.loginName.trim() const { password } = userInfo return new Promise((resolve, reject) => { login({ loginName, password }) .then(res => { console.log(res) const { token } = res setToken(token) commit('SET_TOKEN', token) resolve('success') }) .catch(err => { reject(err) }) }) }, Logout({ commit }) { return new Promise((resolve, reject) => { logout() .then(res => { console.log(res) const { token } = res setToken(token) commit('SET_TOKEN', token) resolve('success') }) .catch(err => { reject(err) }) }) } } } export default user ~~~ ~~~ // src/utils/token // cookie保存token (要装js-cookie插件) import Cookies from 'js-cookie' const TokenKey = 'DME-Token' export function getToken() { return Cookies.get(TokenKey) } export function setToken(token) { // 过期时间为1天 return Cookies.set(TokenKey, token, { expires: 1 }) } export function removeToken() { return Cookies.remove(TokenKey) } ~~~ ### 3. getters.js(注意后面state后面跟的是module中的导出名里data的数据) ~~~ const getters = { token: state => state.user.token, dataSource: state => state.dataSource.data, dataModel: state => state.dataModel.data, appConfig: state => state.appConfig.data } export default getters ~~~ ### 4. index.js ~~~ import Vue from 'vue' import Vuex from 'vuex' import user from './modules/user' import dataSource from './modules/data-source' import dataModel from './modules/data-model' import appConfig from './modules/app-config' import getters from './getters' Vue.use(Vuex) export default new Vuex.Store({ modules: { user, dataSource, dataModel, appConfig }, getters }) ~~~