vuejs业务页面的发布订阅代码设计
平时用vuejs写业务页面时,发现经常会用到相同的逻辑去搭建页面,初始化数据、校验参数、子页面子路由的渲染等。所以在这里总结一下这种页面的初始化套路,方便后续创建页面或者优化逻辑。设计原则
利用发布-订阅的模式去初始化子页面,父页面处理全局的相关操作。
- 父页面:校验参数、数据的合法性,并发网络请求,引导至全局的错误页面,最终触发initReady=true。
- 子页面:订阅initReady事件,成功后进行子页面初始化。
【vuejs业务页面的发布订阅代码设计】
文章图片
代码设计
1. vuex状态数据
// store.jsimport global from './modules/global';
import cards from './modules/cards';
export default {
namespaced: true,
modules: {
global,
cards,
},
};
// ./modules/global.js/*
* 全局数据
*/
export default {
// 命名空间隔离
namespaced: true,
state: {
// 全局事件-初始化完成,子页面订阅此事件的变更
initReady: false,
// 全局错误码
error: null,
// 全局常量,不可更改
constants: Object.freeze({
test: 1,
}),
},
mutations: {
SET_INIT_READY(state, value) {
state.initReady = value;
},
SET_ERROR(state, value) {
state.error = value;
},
},
actions: {
setInitReady({ commit }, value) {
commit('SET_INIT_READY', !!value);
},
setError({ commit }, value) {
commit('SET_ERROR', value || null);
},
},
};
// ./modules/cards.js/*
* 卡列表相关数据
*/
export default {
// 命名空间隔离
namespaced: true,
state: {
// 当前卡
currentCard: {},
// 卡列表
cardsList: [],
},
mutations: {
SET_CURRENT_CARD(state, value) {
state.currentCard = value;
},
SET_CARDS_LIST(state, value) {
state.cardsList = value;
},
},
actions: {
setCurrentCard({ commit }, value) {
commit('SET_CURRENT_CARD', value || {});
},
setCardsList({ commit }, value) {
commit('SET_CARDS_LIST', value || []);
},
},
};
2. vue router路由定义
// routes.js,subApp的路由定义const index = () => import(/* webpackChunkName: "HcTplSubApp" */ './views/index.vue');
const home = () => import(/* webpackChunkName: "HcTplSubApp" */ './views/home.vue');
export default [
{
path: '/',
component: index,
meta: {
title: '首页',
},
children: [
{
path: '', // 首页
name: 'RouteHome', // 使用路由名字进行跳转,有助于代码易读性
component: home,
meta: {
title: '首页',
keepAlive: true,
},
},
],
},
];
3. index父页面
.page-index {
}
4. home子页面
page home.page-home {
}
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 使用协程爬取网页,计算网页数据大小
- 青春的恋习曲
- 分享!如何分分钟实现微信扫二维码调用外部浏览器打开指定页面的功能
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- Android实现主页底部菜单中间tab图案凸起
- mysql|InnoDB数据页结构
- “首富”一封信,中医半页文
- iOS|iOS runtime应用整理
- 长治分行与高管局长治营运中心召开ETC业务对接沟通会