更新记录

1.1.0(2026-10-16) 下载此版本

  • 增加全局和单路由模糊公开路径配置。
  • 支持大小写、连字符、下划线和驼峰形式的公开路径识别。
  • 模糊地址命中后自动规范化为唯一公开地址。
  • 修正 H5 vue-router history 包装和 HBuilderX 项目根目录解析。

平台兼容性

uni-app(3.8.6)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× √ √ √ √ - √ √ -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
√ - - - - - - - - - - -

uni-app H5 路由别名与 URL 美化

aw-pretty-route 是一款适用于 uni-app Vue 3 + Vite 的 H5 路由别名与 URL 美化插件。它可以把 pages.json 中的真实页面路径转换为简洁、稳定、适合分享和 SEO 的公开 URL,同时支持动态路径参数、query 参数映射,以及大小写、蛇形和驼峰路径兼容。

业务代码继续使用 uni-app 注册的真实路径,H5 地址栏自动显示公开路径;App 和小程序保持原生页面路径,不需要修改业务跳转代码。

适用场景

场景 示例
去除 /pages 前缀 /pages/about/index -> /about/index
配置路由别名 /pages/product/site -> /product
动态路径参数 /pages/article/detail?id=123 -> /article/123
兼容历史链接 /ProductCenter、/product_center、/PRODUCT-CENTER -> /product-center
生成 SEO 和分享链接 将真实页面 URL 转换为公开 URL

能力总览

能力 说明
页面发现 自动读取 pages.json,支持主包和分包
静态公开路径 使用页面项的 routeAlias
默认公开路径 自动去除 /pages 前缀
动态公开路径 支持 /article/:id(\\d+) 等模板
参数转换 支持 query.id 转换为路径参数
模糊路径 支持大小写、连字符、下划线和驼峰形式
H5 history 包装 location、push、replace、listen 和 createHref
非 H5 平台 不修改 App 和小程序原生路由
规范化 模糊地址命中后统一回到唯一公开地址

接入方式

1. 注册 Vite 插件

// vite.config.js
import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
import { createAwPrettyRoutePlugin } from './uni_modules/aw-pretty-route/js_sdk/vite.js'

export default defineConfig({
  plugins: [createAwPrettyRoutePlugin(), uni()]
})

只需要配置一次,不需要在 main.js 安装运行时插件。

2. 页面正常注册

{
  "path": "pages/product/site",
  "routeAlias": "/product"
}

3. 业务继续使用真实路径

uni.navigateTo({
  url: '/pages/article/detail?id=123'
})

真实路径和公开路径

插件同时维护两种路径:

名称 示例 用途
真实路径 real /pages/article/detail uni-app 页面注册路径,业务跳转使用
公开路径 public /article/:id 浏览器地址栏、分享链接和 SEO 使用

public 不是文件路径,也不是 pages.json 中的页面路径。它只是希望用户在 H5 地址栏看到的 URL 模板。

例如:

业务跳转:/pages/article/detail?id=123
H5 地址栏:/article/123

业务代码仍然传真实路径:

uni.navigateTo({
  url: '/pages/article/detail?id=123'
})

路径行为

场景 输入 H5 地址栏
普通跳转 /pages/product/site /product
首页 /pages/index/index /
动态页面 /pages/article/detail?id=123 /article/123
模糊地址 /Product /product
App/小程序 /pages/product/site 保持 /pages/product/site

全局配置

在项目根目录创建 aw-pretty-route.config.js:

export default {
  home: '/pages/index/index',
  fuzzy: true,
  routes: [
    {
      // 必须是 pages.json 中已经注册的页面路径。
      real: '/pages/article/detail',
      // H5 地址栏显示的公开 URL,:id 是路径参数。
      public: '/article/:id(\\d+)',
      // 从真实页面 query 中读取路径参数。
      params: { id: 'query.id' }
    }
  ]
}
配置项 类型 默认值 说明
home string /pages/index/index 首页真实路径
fuzzy boolean false 是否全局开启模糊路径
routes array [] 真实路径到公开路径的映射规则

单路由配置

在 pages.json 中配置静态页面

{
  "path": "pages/private/index",
  "routeAlias": "/private",
  "routeFuzzy": false
}
字段 类型 说明
routeAlias string 页面规范公开路径
routeFuzzy boolean 覆盖全局模糊设置

在动态规则中配置

{
  // pages.json 中注册的真实页面路径。
  real: '/pages/article/detail',
  // H5 地址栏使用的公开 URL 模板。
  public: '/article/:id',
  // :id 从 query.id 中取值。
  params: { id: 'query.id' },
  fuzzy: false
}
字段 类型 说明
real string pages.json 中已注册的真实路径
public string 公开路径,可包含 :param,例如 /article/:id
params object 公开路径参数到真实 query 参数的映射
fuzzy boolean 覆盖全局模糊设置

模糊路径规则

开启 fuzzy 后,以下写法可以指向 /product-center:

/product-center
/ProductCenter
/product_center
/PRODUCT-CENTER

命中后地址栏统一为 /product。模糊路径只用于兼容识别,不会产生多个正式公开 URL。

如果多个启用模糊匹配的路由归一化后冲突,构建阶段会报错。

URL API

只在分享、复制链接、SEO canonical 或普通 <a> 链接等场景使用:

import { getPublicUrl } from './uni_modules/aw-pretty-route/js_sdk/index.js'

const url = getPublicUrl('/pages/article/detail?id=123')
API 用途
getPublicUrl(url) 真实 URL 转公开 URL
getRealUrl(url) 公开 URL 转真实 URL
getCanonicalUrl(url) 模糊 URL 转唯一规范公开 URL

日常 navigateTo、redirectTo、reLaunch 和 switchTab 不需要调用这些 API。

params 参数映射

params 的左侧是公开路径中的参数名,右侧是 uni-app 真实页面 URL 中的 query 参数来源。

{
  real: '/pages/article/detail',
  public: '/article/:id',
  params: {
    id: 'query.id'
  }
}

转换关系如下:

真实页面 URL:/pages/article/detail?id=123&tab=comments
公开页面 URL:/article/123?tab=comments

其中:

配置 含义
:id 公开 URL 中的路径参数,值为 123
query.id 从真实 URL 的 id query 参数读取值
tab=comments 没有被映射为路径参数,因此继续保留

平台和部署

平台 行为
H5 使用公开路径和 history 路由
App 使用真实 uni-app 页面路径
小程序 使用真实 uni-app 页面路径

H5 使用 history 模式,生产服务器必须把未知路径回退到 index.html。

常见问题

问题 检查项
地址仍是 /pages/... 确认插件位于 uni() 前面,并确认 manifest.json 使用 history 模式
公开地址刷新 404 配置服务器 SPA fallback 到 index.html
模糊地址未命中 检查全局 fuzzy 或页面 routeFuzzy 是否为 true
构建提示路由冲突 检查真实路径、公开路径和模糊路径是否重复

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

MIT协议

暂无用户评论。