组件升级指南
1、关于数据仓库的改动
如果项目中没有使用到vuex中的module模块,可以使用Vue.observable代替vuex,在index.js中导出普通对象即可。
js
// store/index.js
import state from './state';
import mutations from './mutations';
import * as actions from './actions';
import * as getters from './getters';
export default {
state,
mutations,
actions,
getters
}
同时,在使用到mapGetters、mapMutations时,要去掉对应的module名
js
...mapGetters("login",["userInfo"])=>...mapGetters(["userInfo"])
如果使用到了vuex中的module模块,在index.js中导出vuex实例即可(按照正常的vuex方式使用)
如果模块中使用了命名空间namespaced:true,使用vuex中的相关的模块时就需要加上模块名称了。(登录模块可以不加,组件内有默认值),为了保证数据隔离,自定义模块和man.js中的namcespace请配置为true。
特别注意
Vue.observable只能实现简单的数据响应,让传入的对象变成可响应的,但是没法按照module来做隔离,而且Vue.observable中的数据在vue devtool中无法跟踪调试,不方便排查,所以还是建议直接使用的vuex来做数据存储。
2、关于用户中台相关接口的改动
- 用户中台接口主要包括获取权限菜单、验证码、登录、修改密码、退出等。
- 老版本这些公共接口都放在utils/interface.js中,然后通过在main.js中serviceMap配置对应的请求映射,再在页面中引入调用相关的方法。
- 而在新版本这些公共接口直接封装在actions中,不需要在serviceMap中配置,在页面直接通过mapActions引入调用即可。
3、多服务配置
一般情况下,后台管理项目只用到了两种接口服务,用户中台接口和项目接口,项目接口固定为各环境变量中的VUE_APP_BASE_API配置,用户中台接口在main.js中project下面直接配置service即可。 如果使用到多个接口服务,则需要在project的serviceMap中配置多个接口映射。
4、关于接口权限和按钮权限
- 在开发联调阶段,一般都是本地mock菜单数据,在列表tableConfig中通过url配置接口地址;
- 在其他环境,tableConfig中的url需要换成moduleName配置,并且在data中配置moduleName,页面中的请求地址全部通过module获取;
- 在操作按钮上通过powerLiist.opName判断是否显示。
5、登录、忘记密码、退出操作
这些操作公共库中已有封装相关的组件和方法,在项目中直接替换成组件和方法即可。