ptool
Version:
vue项目开发通用工具类封装
48 lines (47 loc) • 1.46 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @FileName createRoutes.ts
* @Author Mad Dragon <395548460@qq.com>
* @Version V 0.0.1
* @Date 2021/4/13 17:44
* @Title
* @Desc
**/
const vue_1 = __importDefault(require("vue"));
const vue_router_1 = __importDefault(require("vue-router"));
vue_1.default.use(vue_router_1.default);
const VueRouterPush = vue_router_1.default.prototype.push;
vue_router_1.default.prototype.push = function push(to) {
const a = VueRouterPush.call(this, to);
a.catch((err) => err);
return a;
};
const createRouter = (baseRoutes = [], routes = [], base = '', homeName = 'home', mode = 'history', title = '', beforeEach = () => {
}, afterEach = () => { }) => {
const router = new vue_router_1.default({
mode: mode,
base: base,
routes: [
...routes,
...baseRoutes
]
});
// 全局守卫
router.beforeEach((to, from, next) => {
beforeEach(to, next, homeName);
});
// 全局后置钩子
router.afterEach((to) => {
if (to.meta.title) {
document.title = title ? to.meta.title + '-' + title : to.meta.title;
}
// window.scrollTo(0, 0);
afterEach(to);
});
return router;
};
exports.default = createRouter;