调整router版本

This commit is contained in:
唐明明
2022-06-17 17:10:27 +08:00
parent 7f2763a2aa
commit bbc0c351e8
31 changed files with 8816 additions and 9949 deletions

View File

@@ -3,5 +3,4 @@ dist
/webpack
/src/global.d.ts
/test
/jest.config.js
/plugins
/jest.config.js

View File

@@ -12,9 +12,7 @@ module.exports = {
getApp: true,
__uniConfig: true,
__uniRoutes: true,
$npm_package_name: true,
$npm_package_version: true,
$npm_package_last_version: true
$npm_package_name: true
},
parser: '@typescript-eslint/parser',
extends: ['eslint:recommended'],

View File

@@ -36,23 +36,17 @@ export default {
methods: {
formatNav(text) {
if (text != null && text.constructor === String) {
const keyArray = [];
text = text.replace(/((\w+)|('\s*(\w+)\s*')|("\s*(\w+)\s*"))\s*(?=:)/g, function (val) {
const key = `"${val.trim().replace(/"|'/g, '')}"`;
keyArray.push(key);
return key
text = text.replace(/\'/g, '');
text = text.replace(/(\w+)(?=:)/g, function (val) {
return `"${val}"`;
});
text = text.replace(/:\s*([^,{}\s"]+)/g, function (val) {
const arr = val.split(':');
return `:"${arr[1].trim()}"`;
});
const removeReg=/('|")/g;
for (let i = 0; i < keyArray.length; i++) {
const key = keyArray[i];
text=text.replace(new RegExp(`${key}\\s*:\\s*('[^']+')`, 'g'),(...args)=>{
const $1=args[1];
return `${key}:"${$1.replace(removeReg,'')}"`
})
}
try {
text=JSON.parse(text);
} catch (error) {}
text = JSON.parse(text);
} catch (e) {}
}
if (this.append) {
let pathArr = this.$Route.path.split('/');

View File

@@ -11,20 +11,8 @@ export declare interface appletConfig {
animationDuration?: number;
}
export declare function assertDeepObject(object: objectAny): boolean;
export declare function assertNewOptions<T extends InstantiateConfig>(options: T): T | never;
export declare function assertParentChild(parentPath: string, vueVim: any): boolean;
export declare type backTypeRule = 'backbutton' | 'navigateBack';
export declare function baseClone<T extends {
[key: string]: any;
}, K extends keyof T>(source: T, target: Array<any> | objectAny): Array<any> | objectAny | null;
export declare function copyData<T>(object: T): T;
export declare function createRouter(params: InstantiateConfig): Router;
export declare interface debuggerArrayConfig {
@@ -35,12 +23,6 @@ export declare interface debuggerArrayConfig {
export declare type debuggerConfig = boolean | debuggerArrayConfig;
export declare function deepClone<T>(source: T): T;
export declare function deepDecodeQuery(query: objectAny): objectAny;
export declare function def(defObject: objectAny, key: string, getValue: Function): void;
export declare interface endAnimationRule {
animationType?: endAnimationType;
animationDuration?: number;
@@ -48,24 +30,6 @@ export declare interface endAnimationRule {
export declare type endAnimationType = 'slide-out-right' | 'slide-out-left' | 'slide-out-top' | 'slide-out-bottom' | 'pop-out' | 'fade-out' | 'zoom-in' | 'zoom-fade-in' | 'none';
export declare function forMatNextToFrom<T extends totalNextRoute>(router: Router, to: T, from: T): {
matTo: T;
matFrom: T;
};
export declare function getDataType<T>(data: T): string;
export declare function getRoutePath(route: RoutesRule, router: Router): {
finallyPath: string | string[];
aliasPath: string;
path: string;
alias: string | string[] | undefined;
};
export declare function getUniCachePage<T extends objectAny>(pageIndex?: number): T | [];
export declare function getWildcardRule(router: Router, msg?: navErrorRule): RoutesRule | never;
export declare type guardHookRule = (to: totalNextRoute, from: totalNextRoute, next: (rule?: navtoRule | false) => void) => void;
export declare interface H5Config {
@@ -96,8 +60,6 @@ export declare interface hookObjectRule {
hook: Function;
}
declare type hookRule = (args: Array<any>, next: (args: Array<any>) => void, router: Router) => void;
export declare enum hookToggle {
'beforeHooks' = "beforeEach",
'afterHooks' = "afterEach",
@@ -111,7 +73,6 @@ export declare interface InstantiateConfig {
h5?: H5Config;
APP?: AppConfig;
applet?: appletConfig;
beforeProxyHooks?: proxyHooksConfig;
debugger?: debuggerConfig;
routerBeforeEach?: (to: navtoRule, from: navtoRule, next: (rule?: navtoRule | false) => void) => void;
routerAfterEach?: (to: navtoRule, from: navtoRule, next?: Function) => void;
@@ -130,10 +91,6 @@ export declare interface LifeCycleConfig {
routerErrorHooks: Array<(error: navErrorRule, router: Router) => void>;
}
export declare function lockDetectWarn(router: Router, to: string | number | totalNextRoute | navRoute, navType: NAVTYPE, next: Function, uniActualData?: uniBackApiRule | uniBackRule | undefined, passiveType?: 'beforeHooks' | 'afterHooks'): void;
export declare function mergeConfig<T extends InstantiateConfig>(baseConfig: T, userConfig: T): T;
export declare interface navErrorRule {
type: navRuleStatus;
msg: string;
@@ -174,13 +131,6 @@ export declare enum navtypeToggle {
'back' = "navigateBack"
}
export declare function notDeepClearNull<T>(object: T): T;
export declare function notRouteTo404(router: Router, toRoute: RoutesRule | {
redirect: any;
path: string;
}, parseToRule: totalNextRoute, navType: NAVTYPE): RoutesRule | totalNextRoute | never;
export declare type objectAny = {
[propName: string]: any;
};
@@ -191,8 +141,6 @@ export declare interface originMixins extends uniNavApiRule {
export declare type pageTypeRule = 'app' | 'page' | 'component';
export declare function paramsToQuery(router: Router, toRule: totalNextRoute | string): totalNextRoute | string;
export declare type platformRule = 'h5' | 'app-plus' | 'app-lets' | 'mp-weixin' | 'mp-baidu' | 'mp-alipay' | 'mp-toutiao' | 'mp-qq' | 'mp-360';
export declare type PromiseResolve = (value?: void | PromiseLike<void> | undefined) => void;
@@ -213,34 +161,12 @@ export declare type proxyDepsRule = {
export declare type proxyHookName = 'beforeHooks' | 'afterHooks';
export declare interface proxyHooksConfig {
onLaunch?: hookRule;
onShow?: hookRule;
onHide?: hookRule;
onError?: hookRule;
onInit?: hookRule;
onLoad?: hookRule;
onReady?: hookRule;
onUnload?: hookRule;
onResize?: hookRule;
destroyed?: hookRule;
created?: hookRule;
beforeCreate?: hookRule;
beforeMount?: hookRule;
mounted?: hookRule;
beforeDestroy?: hookRule;
}
export declare type reloadNavRule = totalNextRoute | false | undefined | string;
export declare function removeSimpleValue(array: Array<string | number>, value: string): Boolean;
export declare type reNavMethodRule = 'navigateTo' | 'redirectTo' | 'reLaunch' | 'switchTab';
export declare type reNotNavMethodRule = 'navigateBack';
export declare function resolveAbsolutePath(path: string, router: Router): string | never;
export declare enum rewriteMethodToggle {
'navigateTo' = "push",
'navigate' = "push",
@@ -251,12 +177,12 @@ export declare enum rewriteMethodToggle {
}
export declare interface Router {
[key: string]: any;
readonly lifeCycle: LifeCycleConfig;
readonly options: InstantiateConfig;
$lockStatus: boolean;
$route: object | null;
enterPath: string;
runId: number;
Vue: any;
appMain: {
NAVTYPE: reNavMethodRule | reNotNavMethodRule;
@@ -293,8 +219,6 @@ export declare interface routeRule {
[propName: string]: any;
}
export declare function routesForMapRoute(router: Router, path: string, mapArrayKey: Array<routesMapKeysRule>, deepFind?: boolean | undefined): RoutesRule | never;
export declare type routesMapKeysRule = 'finallyPathList' | 'finallyPathMap' | 'aliasPathMap' | 'pathMap' | 'nameMap' | 'vueRouteMap';
export declare interface routesMapRule {
@@ -331,8 +255,6 @@ export declare interface startAnimationRule {
export declare type startAnimationType = 'slide-in-right' | 'slide-in-left' | 'slide-in-top' | 'slide-in-bottom' | 'pop-in' | 'fade-in' | 'zoom-out' | 'zoom-fade-out' | 'none';
export declare function timeOut(time: number): Promise<void>;
export declare interface totalNextRoute extends h5NextRule, navtoRule {
path: string;
delta?: number;
@@ -372,13 +294,6 @@ export declare interface uniNavApiRule {
};
}
export declare function urlToJson(url: string): {
path: string;
query: objectAny;
};
export declare function voidFun(...args: any): void;
export declare type vueHookNameRule = 'onLaunch' | 'onShow' | 'onHide' | 'onError' | 'onInit' | 'onLoad' | 'onReady' | 'onUnload' | 'onResize' | 'created' | 'beforeMount' | 'mounted' | 'beforeDestroy' | 'destroyed';
export declare type vueOptionRule = {

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
{
"name": "uni-simple-router",
"version": "2.0.8-beta.4",
"version": "2.0.7",
"description": "> 一个更为简洁的[Vue-router](https://router.vuejs.org/zh/),专为 [uni-app](https://uniapp.dcloud.io/) 量身打造",
"main": "dist/uni-simple-router.js",
"types": "dist/uni-simple-router.d.ts",
@@ -12,7 +12,7 @@
"lintFix": "eslint --ext .js,.ts src --fix",
"test": "jest test/query-toggle.spec.ts",
"publish": "node ./publish/index.js",
"build": "node ./publish/build.js"
"build":"node ./publish/build.js"
},
"repository": {
"type": "git",

16
node_modules/uni-simple-router/progress.md generated vendored Normal file
View File

@@ -0,0 +1,16 @@
## Fixes bug
* `小程序``onLoad``onShow` 执行不标准的BUG。(#206,#224,#291)
* `小程序` 端 启动页必须写 `onLoad` 才会执行的BUG。
* `APP` 端 tab 拦截后无法自动还原选中区域现在已修复。
* H5端设置 `aliasPath` 后,无法使用 `aliasPath` 跨端跳转 (#302)
* 重写代理生命周期逻辑、保证执行各端执行顺序 (#312)
## Revise
* 参数可以直接传递 `null`。但是需要注意:**在非深度对象传参的情况下,小程序会将 `null` 解析为字符串`undefined`**
* 多端情况下自定义启动参数不仅限制于 `query` 传递深度参数,任何组合都可以 (#307,#301)
* 去除 `keyword` 白名单字段
* 调整小程序启动页面生命周期的执行让在小程序下的生命周期能更贴近App、H5
* `routerErrorEach` 新增回调参数、包括:`NAVTYPE``uniActualData``level`
## Known Issues
* `APP` 端启动页为tab时拦截到其他页面后底部tabbar 还依然存在,请避免把原生 `tabbar` 页设置成启动页。你可以在 `beforeEach` 中使用 next 到tabbar页效果一致

View File

@@ -1,32 +0,0 @@
import { removeSimpleValue } from '../helpers/utils';
import { Router} from '../options/base';
let [dynamicCacheName, __id__] = ['', ''];
export const addKeepAliveInclude = function(
router:Router
):void{
// 【Fixe】 https://github.com/SilurianYang/uni-simple-router/issues/316 2021年12月10日14:30:13
const app = getApp();
const keepAliveInclude:Array<string> = app.keepAliveInclude;
if (router.runId === 0 && keepAliveInclude.length === 0) {
__id__ = app.$route.params.__id__;
dynamicCacheName = app.$route.meta.name;
const cacheId = dynamicCacheName + '-' + __id__;
app.keepAliveInclude.push(cacheId)
} else {
if (dynamicCacheName !== '') {
const arrayCacheId = app.keepAliveInclude;
for (let i = 0; i < arrayCacheId.length; i++) {
const cacheId:string = arrayCacheId[i];
const cacheIdReg = new RegExp(`${dynamicCacheName}-(\\d+)$`);
const firstCacheId = `${dynamicCacheName}-${__id__}`;
if (cacheIdReg.test(cacheId) && cacheId !== firstCacheId) {
removeSimpleValue(arrayCacheId, firstCacheId);
dynamicCacheName = '';
break;
}
}
}
}
}

View File

@@ -1,4 +1,4 @@
import { navtoRule, objectAny, Router, totalNextRoute } from '../options/base';
import { objectAny, Router, totalNextRoute } from '../options/base';
import { AppConfig } from '../options/config';
let quitBefore:number|null = null;
@@ -7,7 +7,7 @@ let TABBAR:objectAny|null = null;
export function registerLoddingPage(
router:Router,
):void{
if (router.options.APP?.registerLoadingPage) {
if (router.options.registerLoadingPage) {
const { loadingPageHook, loadingPageStyle } = router.options.APP as AppConfig; // 获取app所有配置
const view = new plus.nativeObj.View('router-loadding', {
top: '0px',
@@ -40,29 +40,6 @@ export function runtimeQuit(
}
}
export function HomeNvueSwitchTab(
router:Router,
to:navtoRule,
oldMethod:Function
):Promise<Boolean> {
return new Promise((
resolve:(value:boolean)=>void
) => {
if (router.runId !== 0) {
return resolve(false)
}
if (!(__uniConfig.tabBar && Array.isArray(__uniConfig.tabBar.list))) {
return resolve(false)
}
// Fixe https://github.com/SilurianYang/uni-simple-router/issues/373 2022-4-3 19:40:59
oldMethod({
url: __uniConfig.entryPagePath,
animationDuration:0,
complete: () => resolve(true)
});
})
}
export function tabIndexSelect(
to:totalNextRoute,
from:totalNextRoute

View File

@@ -36,23 +36,17 @@ export default {
methods: {
formatNav(text) {
if (text != null && text.constructor === String) {
const keyArray = [];
text = text.replace(/((\w+)|('\s*(\w+)\s*')|("\s*(\w+)\s*"))\s*(?=:)/g, function (val) {
const key = `"${val.trim().replace(/"|'/g, '')}"`;
keyArray.push(key);
return key
text = text.replace(/\'/g, '');
text = text.replace(/(\w+)(?=:)/g, function (val) {
return `"${val}"`;
});
text = text.replace(/:\s*([^,{}\s"]+)/g, function (val) {
const arr = val.split(':');
return `:"${arr[1].trim()}"`;
});
const removeReg=/('|")/g;
for (let i = 0; i < keyArray.length; i++) {
const key = keyArray[i];
text=text.replace(new RegExp(`${key}\\s*:\\s*('[^']+')`, 'g'),(...args)=>{
const $1=args[1];
return `${key}:"${$1.replace(removeReg,'')}"`
})
}
try {
text=JSON.parse(text);
} catch (error) {}
text = JSON.parse(text);
} catch (e) {}
}
if (this.append) {
let pathArr = this.$Route.path.split('/');

View File

@@ -4,6 +4,4 @@ declare var __uniConfig:any;
declare var __uniRoutes:any;
declare function getCurrentPages(isAll:boolean|undefined=false):any;
declare function getApp(args?:{allowDefault: true}):any;
declare var $npm_package_name:string;
declare var $npm_package_version:string;
declare var $npm_package_last_version:string;
declare var $npm_package_name:string;

View File

@@ -1,7 +1,6 @@
import {err} from './warn'
import { InstantiateConfig, LifeCycleConfig} from '../options/config'
import { vueHookNameRule, proxyDepsRule } from '../options/base';
import { parseQuery } from '../public/query';
export const mpPlatformReg = '(^mp-weixin$)|(^mp-baidu$)|(^mp-alipay$)|(^mp-toutiao$)|(^mp-qq$)|(^mp-360$)' // 小程序下不能直接导出正则 需要重新组装成正则 不然bug一推 诡异
@@ -27,11 +26,6 @@ export const baseConfig:InstantiateConfig = {
applet: {
animationDuration: 300
},
beforeProxyHooks: {
onLoad: ([options], next, router) => {
next([parseQuery({query: options}, router)])
}
},
platform: 'h5',
keepUniOriginNav: false,
debugger: false,

View File

@@ -8,7 +8,6 @@ import { forceGuardEach } from '../public/methods';
import { assertParentChild, voidFun } from './utils';
import { getEnterPath } from '../applets/appletPatch';
import { mpPlatformReg } from './config';
import {beforeProxyHook} from '../public/beforeProxyHook'
let registerRouter:boolean = false;
let onloadProxyOk:boolean = false;
@@ -35,7 +34,6 @@ export function getMixins(Vue:any, router: Router):{
const toggleHooks = {
h5: {
beforeCreate(this: any): void {
beforeProxyHook(this, router);
if (this.$options.router) {
router.$route = this.$options.router; // 挂载vue-router到路由对象下
let vueRouteMap:RoutesRule[]|RoutesRule = [];
@@ -53,7 +51,6 @@ export function getMixins(Vue:any, router: Router):{
},
'app-plus': {
beforeCreate(this: any): void {
beforeProxyHook(this, router);
if (!registerRouter) {
registerRouter = true;
proxyPageHook(this, router, 'app');
@@ -63,8 +60,6 @@ export function getMixins(Vue:any, router: Router):{
},
'app-lets': {
beforeCreate(this: any): void {
beforeProxyHook(this, router);
// 保证这个函数不会被重写
const pluginMark = $npm_package_name;
voidFun(pluginMark);

View File

@@ -204,20 +204,6 @@ export function copyData<T>(object:T): T {
return JSON.parse(JSON.stringify(object))
}
export function removeSimpleValue(
array:Array<string|number>,
value:string
):Boolean {
for (let i = 0; i < array.length; i++) {
const it = array[i];
if (it === value) {
array.splice(i, 1);
return true
}
}
return false
}
export function getUniCachePage<T extends objectAny>(pageIndex?:number):T|[] {
const pages:T = getCurrentPages();
if (pageIndex == null) {
@@ -421,7 +407,7 @@ export function resolveAbsolutePath(
}
const query:string = paramsArray[2] || '';
if (/^\.\/[^\.]+/.test(trimPath)) { // 当前路径下
const navPath:string = (router as unknown as {currentRoute:{path:string}}).currentRoute.path + path;
const navPath:string = router.currentRoute.path + path;
return navPath.replace(/[^\/]+\.\//, '');
}
const relative = paramsArray[1].replace(/\//g, `\\/`).replace(/\.\./g, `[^\\/]+`).replace(/\./g, '\\.');

View File

@@ -1,6 +1,5 @@
export * from './options/base'
export * from './options/config'
export * from './helpers/utils'
export {
runtimeQuit
@@ -10,8 +9,3 @@ export {
RouterMount,
createRouter
} from './public/router'
const version = $npm_package_version;
if (/[A-Z]/g.test(version)) {
console.warn(`${$npm_package_name.toLocaleLowerCase()} 提示】:当前版本 ${version.toLocaleLowerCase()} 此版本为测试版。有BUG请退回正式版线上正式版本${$npm_package_last_version}`)
}

View File

@@ -208,12 +208,12 @@ export interface RoutesRule {
}
export interface Router {
[key:string]:any;
readonly lifeCycle: LifeCycleConfig;
readonly options: InstantiateConfig;
$lockStatus:boolean;
$route: object | null;
enterPath:string;
runId:number;
Vue:any;
appMain:{
NAVTYPE:reNavMethodRule|reNotNavMethodRule,

View File

@@ -25,25 +25,6 @@ export interface appletConfig {
animationDuration?:number; // 页面切换时间,有助于路由锁精准解锁
}
type hookRule=(args:Array<any>, next:(args:Array<any>)=>void, router:Router)=>void;
export interface proxyHooksConfig{
onLaunch?:hookRule;
onShow?:hookRule;
onHide?:hookRule;
onError?:hookRule;
onInit?:hookRule;
onLoad?:hookRule;
onReady?:hookRule;
onUnload?:hookRule;
onResize?:hookRule;
destroyed?:hookRule;
created?:hookRule;
beforeCreate?:hookRule;
beforeMount?:hookRule;
mounted?:hookRule;
beforeDestroy?:hookRule;
}
export interface debuggerArrayConfig{
error?:boolean;
warn?:boolean;
@@ -57,7 +38,6 @@ export interface InstantiateConfig {
h5?: H5Config;
APP?: AppConfig;
applet?:appletConfig;
beforeProxyHooks?:proxyHooksConfig;
debugger?: debuggerConfig; // 是否处于开发阶段 设置为true则打印日志
routerBeforeEach?: (to:navtoRule, from:navtoRule, next:(rule?: navtoRule|false)=>void) => void; // router 前置路由函数 每次触发跳转前先会触发此函数
routerAfterEach?: (to:navtoRule, from:navtoRule, next?: Function) => void; // router 后置路由函数 每次触发跳转后会触发此函数

View File

@@ -1,46 +0,0 @@
import { voidFun } from '../helpers/utils';
import { warn } from '../helpers/warn';
import { Router, vueHookNameRule } from '../options/base';
export function beforeProxyHook(
Vim:any,
router:Router
):boolean {
const hookOptions = Vim.$options;
const {beforeProxyHooks} = router.options;
if (hookOptions == null) {
return false;
}
if (beforeProxyHooks == null) {
return false;
}
const keyArray = Object.keys(beforeProxyHooks) as Array<vueHookNameRule>;
for (let i = 0; i < keyArray.length; i++) {
const key = keyArray[i];
const hooksArray:Array<Function>|null = hookOptions[key];
if (hooksArray) {
const beforeProxyFun = beforeProxyHooks[key];
for (let j = 0; j < hooksArray.length; j++) {
const hookFun = hooksArray[j];
if (hookFun.toString().includes($npm_package_name)) {
continue
}
const [oldHook] = hooksArray.splice(j, 1, function myReplace(this: any, ...args:Array<any>) {
const pluginMarkId = $npm_package_name;
voidFun(pluginMarkId);
if (beforeProxyFun) {
beforeProxyFun.call(this, args, (options) => {
oldHook.apply(this, options)
}, router);
} else {
oldHook.apply(this, args)
}
});
}
} else {
warn(`beforeProxyHooks ===> 当前组件不适合${key},或者 hook: ${key} 不存在,已为你规避处理,可以忽略。`, router)
}
}
return true
}

View File

@@ -18,7 +18,6 @@ import {
} from '../helpers/utils'
import { navjump } from './methods';
import { proxyH5Mount } from '../H5/proxyHook';
import { addKeepAliveInclude } from '../H5/patch';
import { tabIndexSelect } from '../app/appPatch';
export const ERRORHOOK:Array<(error:navErrorRule, router:Router)=>void> = [
@@ -34,10 +33,7 @@ export const HOOKLIST: hookListRule = [
router.$lockStatus = false;
if (router.options.platform === 'h5') {
proxyH5Mount(router);
// 【Fixe】 https://github.com/SilurianYang/uni-simple-router/issues/316 2021年12月10日14:30:13
addKeepAliveInclude(router);
}
router.runId++;
return callHook(router.lifeCycle.routerAfterHooks[0], to, from, router, next, false)
}
];

View File

@@ -64,11 +64,6 @@ export function navjump(
level = +to;
} else {
level = to.delta || 1;
// 主要剥离事件函数
animation = {
...animation || {},
...(to as uniBackApiRule)
}
}
if (router.options.platform === 'h5') {
(router.$route as any).go(-level);

View File

@@ -27,7 +27,6 @@ import {
} from '../helpers/warn'
import {uniOriginJump} from './uniOrigin'
import { HomeNvueSwitchTab } from '../app/appPatch';
const rewrite: Array<reNavMethodRule|reNotNavMethodRule> = [
'navigateTo',
@@ -36,19 +35,6 @@ const rewrite: Array<reNavMethodRule|reNotNavMethodRule> = [
'switchTab',
'navigateBack'
];
const cacheOldMethod:{
navigateTo:Function;
redirectTo:Function;
reLaunch:Function;
switchTab:Function;
navigateBack:Function;
} = {
navigateTo: () => {},
redirectTo: () => {},
reLaunch: () => {},
switchTab: () => {},
navigateBack: () => {}
}
export function rewriteMethod(
router:Router
@@ -56,20 +42,14 @@ export function rewriteMethod(
if (router.options.keepUniOriginNav === false) {
rewrite.forEach(name => {
const oldMethod: Function = uni[name];
cacheOldMethod[name] = oldMethod;
uni[name] = async function(
uni[name] = function(
params:originMixins|{from:string}|navtoRule,
originCall:boolean = false,
callOkCb?:Function,
forceNav?:boolean
):Promise<void> {
):void {
if (originCall) {
if (router.options.platform === 'app-plus') {
await HomeNvueSwitchTab(router, (params as navtoRule), cacheOldMethod['reLaunch']);
}
uniOriginJump(router, oldMethod, name, params as originMixins, callOkCb, forceNav)
} else {
if (router.options.platform === 'app-plus') {
if (Object.keys(router.appMain).length === 0) {
@@ -81,8 +61,6 @@ export function rewriteMethod(
}
callRouterMethod(params as uniNavApiRule, name, router);
}
};
})
}
@@ -104,7 +82,8 @@ function callRouterMethod(
if (funName === 'reLaunch' && JSON.stringify(option) === '{"url":"/"}') {
warn(
`uni-app 原生方法reLaunch({url:'/'}) 默认被重写啦!你可以使用 this.$Router.replaceAll() 或者 uni.reLaunch({url:'/?xxx=xxx'})`,
router
router,
true
);
funName = 'navigateBack';
option = {
@@ -134,13 +113,15 @@ function callRouterMethod(
if (getDataType<string | string[]>(finallyPath) === '[object Array]') {
warn(
`uni-app 原生方法跳转路径为:${path}。此路为是tab页面时不允许设置 alias 为数组的情况,并且不能为动态路由!当然你可以通过通配符*解决!`,
router
router,
true
);
}
if ((finallyPath as string) === '*') {
warn(
`uni-app 原生方法跳转路径为:${path}。在路由表中找不到相关路由表!当然你可以通过通配符*解决!`,
router
router,
true
);
}
// Fixe h5 端无法触发 onTabItemTap hook 2021年6月3日17:26:47

View File

@@ -10,14 +10,11 @@ import {rewriteMethod} from '../public/rewrite'
let AppReadyResolve:PromiseResolve = () => {};
const AppReady:Promise<void> = new Promise(resolve => (AppReadyResolve = resolve));
function createRouter(
params: InstantiateConfig
):Router {
function createRouter(params: InstantiateConfig):Router {
const options = assertNewOptions<InstantiateConfig>(params);
const router:Router = {
options,
mount: [],
runId: 0,
Vue: null,
proxyHookDeps: proxyHookDeps,
appMain: {},
@@ -109,11 +106,7 @@ function createRouter(
return router;
}
function RouterMount(
Vim:any,
router:Router,
el:string | undefined = '#app'
) :void|never {
function RouterMount(Vim:any, router:Router, el:string | undefined = '#app') :void|never {
if (getDataType<Array<any>>(router.mount) === '[object Array]') {
router.mount.push({
app: Vim,

View File

@@ -1,24 +1,6 @@
const {resolve} = require('path');
const CopyPlugin = require('copy-webpack-plugin');
const webpack =require('webpack');
const cmd = require('node-cmd');
const {data:versions,err} = cmd.runSync('npm v uni-simple-router versions');
if(err){
console.log('获取线上版本失败,无法继续打包。。。')
process.exit(1);
}
let lastVersion='';
const list=JSON.parse(versions.replace(/'/g,'"')).reverse();
for(let i=0;i<list.length;i++){
if (!/[A-Za-z]/g.test(list[i])) {
lastVersion=list[i];
break;
}
}
module.exports = {
entry: './src/index.ts',
@@ -48,18 +30,12 @@ module.exports = {
force: true,
from: resolve(__dirname, '../src/component'),
to: resolve(__dirname, '../dist'),
}
},
]),
new webpack.DefinePlugin({
$npm_package_name: webpack.DefinePlugin.runtimeValue(() => {
return JSON.stringify(process.env.npm_package_name.toLocaleUpperCase())
}, true ),
$npm_package_version: webpack.DefinePlugin.runtimeValue(() => {
return JSON.stringify(process.env.npm_package_version.toLocaleUpperCase())
}, true ),
$npm_package_last_version: webpack.DefinePlugin.runtimeValue(() => {
return JSON.stringify(lastVersion)
}, true ),
}, true )
})
],
};

View File

@@ -1,24 +1,22 @@
const {merge} = require('webpack-merge');
const {merge} = require("webpack-merge");
const {resolve} = require('path');
const common = require('./webpack.common.js');
const common = require("./webpack.common.js");
const CopyPlugin = require('copy-webpack-plugin');
const output = resolve(__dirname, '../examples/uni-simple-router2.0/dist');
const output=resolve(__dirname, '../examples/uni-simple-router2.0/dist');
module.exports = merge(common, {
mode: 'development',
devtool: 'source-map',
output: {
path: output,
mode: 'development',
devtool: 'source-map',
output: {
path:output ,
filename: 'uni-simple-router.js',
},
plugins: [
new CopyPlugin([
{
force: true,
from: resolve(__dirname, '../src/component'),
to: output,
}
]),
],
});
},
plugins: [
new CopyPlugin([{
force: true,
from: resolve(__dirname, '../src/component'),
to: output,
}]),
]
});