用于浙政钉小程序的 BasePage 基础代码
简单记录一点代码,避免踩坑
BasePage.js
import dd from 'gdt-jsapi' export const BasePage = (pageConfig) => { pageConfig = Object.assign({ anonymous: true // 页面默认可访问 }, pageConfig || {}) // 取出 anonymous 和 onLoad const { anonymous, onLoad } = pageConfig return Page(Object.assign(pageConfig, { onLoad(options) { /** * token 格式,value 是 token 的值,expired_at 是 token 过期时间 * { value: '', expired_at: 0 } */ const token = dd.getStorageSync({ key: '_USER_TOKEN_' }) const pages = getCurrentPages() const url = pages[0].route // 如果不是 anonymous 页面,并且 token 没有值,获取 token 已经失效 if(!anonymous && (!token.data || !( token.data.value || token.data.expired_at < Date.now() ))) { dd.redirectTo({ url: `/pages/login/login?redirectTo=${url}` }) return } onLoad && onLoad.call(this, options) } })) }
index.js
import { BasePage } from '/basePage'
BasePage({
anonymous: false,
onLoad(query) {
console.log('page load')
},
onReady() {
// 页面加载完成
},
onShow() {
// 页面显示
},
onHide() {
// 页面隐藏
},
onUnload() {
// 页面被关闭
},
onTitleClick() {
// 标题被点击
},
onPullDownRefresh() {
// 页面被下拉
},
onReachBottom() {
// 页面被拉到底部
},
onShareAppMessage() {
// 返回自定义分享信息
},
});
在 BasePage 中定义一个变量 anonymous,标记页面是否需要登录,默认 true 为可匿名访问,如果改为 false,表示需要登录,这时候需要验证 token 是否存在以及有效。
同时覆写页面的 onLoad 事件,在页面 onLoad 事件执行之前,判断如果登录状态异常,跳转到登录页面。