Quellcode durchsuchen

refactor(router): 统一使用 parseUrlToObj 替换 parseRouteStr

将路由解析功能从 queryString.ts 迁移到 utils/index.ts 并重命名为 parseUrlToObj
删除不再使用的 queryString.ts 文件
feige996 vor 8 Monaten
Ursprung
Commit
03b8b0c2b0
4 geänderte Dateien mit 6 neuen und 49 gelöschten Zeilen
  1. 2 2
      src/pages/login/login.vue
  2. 2 3
      src/router/interceptor.ts
  3. 0 42
      src/router/queryString.ts
  4. 2 2
      src/utils/index.ts

+ 2 - 2
src/pages/login/login.vue

@@ -8,11 +8,11 @@
 </route>
 
 <script lang="ts" setup>
-import { parseRouteStr } from '@/router/queryString'
 import { useUserStore } from '@/store/user'
 import { tabbarList } from '@/tabbar/config'
 import { isPageTabbar } from '@/tabbar/store'
 import { ensureDecodeURIComponent } from '@/utils'
+import { parseUrlToObj } from '@/utils/index'
 
 const redirectUrl = ref('')
 onLoad((options) => {
@@ -39,7 +39,7 @@ function doLogin() {
   if (!path.startsWith('/')) {
     path = `/${path}`
   }
-  const { path: _path, query } = parseRouteStr(path)
+  const { path: _path, query } = parseUrlToObj(path)
   console.log('_path:', _path, 'query:', query, 'path:', path)
   console.log('isPageTabbar(_path):', isPageTabbar(_path))
   if (isPageTabbar(_path)) {

+ 2 - 3
src/router/interceptor.ts

@@ -6,9 +6,8 @@
  */
 import { useUserStore } from '@/store'
 import { tabbarStore } from '@/tabbar/store'
-import { getLastPage } from '@/utils'
+import { getLastPage, parseUrlToObj } from '@/utils/index'
 import { EXCLUDE_PAGE_LIST, isNeedLogin, LOGIN_PAGE, LOGIN_PAGE_LIST } from '../login/config'
-import { parseRouteStr } from './queryString'
 
 // 黑名单登录拦截器 - (适用于大部分页面不需要登录,少部分页面需要登录)
 export const navigateToInterceptor = {
@@ -18,7 +17,7 @@ export const navigateToInterceptor = {
     if (url === undefined) {
       return
     }
-    let { path, query: _query } = parseRouteStr(url)
+    let { path, query: _query } = parseUrlToObj(url)
 
     console.log('路由拦截器 1: url->', url, ', query ->', query)
     const myQuery = { ..._query, ...query }

+ 0 - 42
src/router/queryString.ts

@@ -1,42 +0,0 @@
-/**
- * 把一个带查询参数的路由字符串解析为对象
- * @param query 要解析的查询字符串
- * @returns 解析后的对象
- */
-export function parseQuery(query: string): Record<string, any> {
-  if (!query)
-    return {}
-
-  // 处理 ? 前缀
-  if (query.startsWith('?'))
-    query = query.slice(1)
-
-  return query.split('&').reduce((acc, cur) => {
-    const [key, value] = cur.split('=')
-    acc[key] = decodeURIComponent(value)
-    return acc
-  }, {} as Record<string, any>)
-}
-
-export function parseRouteStr(routeStr: string): Record<string, any> {
-  if (!routeStr)
-    return {}
-
-  if (!routeStr.includes('?')) {
-    return {
-      path: routeStr,
-    }
-  }
-
-  const [path, query] = routeStr.split('?')
-  if (query) {
-    return {
-      path,
-      query: parseQuery(query),
-    }
-  }
-
-  return {
-    path,
-  }
-}

+ 2 - 2
src/utils/index.ts

@@ -27,7 +27,7 @@ export function currRoute() {
   // console.log(fullPath)
   // eg: /pages/login/login?redirect=%2Fpages%2Fdemo%2Fbase%2Froute-interceptor (小程序)
   // eg: /pages/login/login?redirect=%2Fpages%2Froute-interceptor%2Findex%3Fname%3Dfeige%26age%3D30(h5)
-  return getUrlObj(fullPath)
+  return parseUrlToObj(fullPath)
 }
 
 export function ensureDecodeURIComponent(url: string) {
@@ -41,7 +41,7 @@ export function ensureDecodeURIComponent(url: string) {
  * 比如输入url: /pages/login/login?redirect=%2Fpages%2Fdemo%2Fbase%2Froute-interceptor
  * 输出: {path: /pages/login/login, query: {redirect: /pages/demo/base/route-interceptor}}
  */
-export function getUrlObj(url: string) {
+export function parseUrlToObj(url: string) {
   const [path, queryStr] = url.split('?')
   // console.log(path, queryStr)