import { getCurrentRoute } from './utils.js' /*默认配置*/ const defaultOptions = { strict: false, enter(current) {}, leave(prev) {}, routting(current, prev) {} } // 用于存放页面路由信息 const map = new Map() // 用于存放上一个页面路由信息 let prev = null function behavior(options) { const mixin = {} options = { ...defaultOptions, ...options } // 页面打开 mixin.onLoad = function() { const route = getCurrentRoute() if (!route) return if (map.has(route.path)) return map.set(route.path, route) options.enter(route) options.routting(route, prev) } // 页面显示 mixin.onShow = function() { if (options.strict) return mixin.onLoad() } // 页面隐藏 mixin.onHide = function() { if (options.strict) return mixin.onUnload() } // 页面关闭 mixin.onUnload = function() { prev = null const route = getCurrentRoute() if (!route) return if (!map.has(route.path)) return prev = map.get(route.path) map.delete(prev.path) options.leave(prev) } return mixin } export default behavior