utils.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /**
  2. * 控制台打印内容
  3. * @param {string} msg 内容
  4. * @param {string} action ['log'] 打印类型
  5. * @param {never}
  6. */
  7. export const print = function (msg, action = 'log') {
  8. console[action]('[route-guards] ' + msg);
  9. };
  10. /**
  11. * 判断错误对象是否是由`Error`对象实例化出来的
  12. * @param {Error|Object} errObj
  13. * @return {boolean}
  14. */
  15. export const isError = function (errObj) {
  16. return Object.prototype.toString.call(errObj).includes('Error');
  17. };
  18. /**
  19. * 获取并封装当前路由栈的信息
  20. * @return {Object}
  21. */
  22. export const getCurStack = function () {
  23. const stackAll = getCurrentPages();
  24. const stackLen = stackAll.length;
  25. // 跳过路由栈为空的情况(App端)
  26. if (stackLen === 0) {
  27. return false;
  28. }
  29. const curStack = stackAll[stackLen - 1];
  30. const from = { url: '/' + curStack.route };
  31. return from;
  32. };
  33. /**
  34. * 注册 钩子
  35. * @param {Function[]} list 钩子列表
  36. * @param {Function} callback 回调函数
  37. * @returns {Function} 用于注销当前注册钩子的闭包函数
  38. */
  39. export const registerHook = function (list, callback) {
  40. list.push(callback);
  41. return () => {
  42. const index = list.indexOf(callback);
  43. if (index !== -1) list.splice(index, 1);
  44. };
  45. };