乐于分享
好东西不私藏

uni-router:uni-app路由管理新选择

uni-router:uni-app路由管理新选择

本文基于 v1.3.0 版本,全面介绍 @meng-xi/uni-router 的设计理念与完整功能。

为什么需要 uni-router?

uni-app 原生路由系统基于 pages.json 静态配置,导航通过 uni.navigateTo / uni.redirectTo / uni.reLaunch / uni.navigateBack 等 API 直接调用,缺少以下关键能力:

  • 无路由守卫
    :无法在导航前进行权限校验、登录检查等拦截
  • 无命名路由
    :必须硬编码路径字符串,重构时容易遗漏
  • 无路由元信息
    :无法为路由附加标题、权限标记等结构化数据
  • 无错误体系
    :导航失败时只能通过回调获取,缺乏统一的错误处理机制
  • 无状态同步
    :浏览器后退、物理返回键等场景下路由状态可能不一致

@meng-xi/uni-router 的目标是在 uni-app 的静态页面模型上,提供一套 vue-router 风格的路由管理方案,让开发者在 uni-app 中也能享受现代化的路由开发体验。


核心设计理念

不替代 pages.json,而是与之配合

uni-router 不替代pages.json。页面注册仍由 pages.json 负责,uni-router 在此基础上提供路由导航、守卫、元信息等增强能力。这种设计确保了:

  • 完全兼容 uni-app 的页面管理机制
  • 不影响 pages.json 的条件编译等原生能力
  • 可以渐进式引入,无需改造现有项目

基于 uni-app 原生 API 实现

所有导航操作最终通过 uni.navigateTo / uni.redirectTo / uni.switchTab / uni.reLaunch / uni.navigateBack 执行,不绕过 uni-app 的页面管理机制,确保跨平台行为一致。


功能全景

一、路由导航

push — 导航到新页面

// 路径字符串await router.push('/pages/about/about')// 路径对象 + 查询参数await router.push({ path'/pages/about/about', query: { id'1' } })// 命名路由await router.push({ name'about' })// 带动画参数(仅 App 端生效)await router.push({ path'/pages/about/about', animation: { type'slide-in-bottom', duration500 } })

push 自动根据 meta.isTab 选择 uni.navigateTo(普通页面)或 uni.switchTab(TabBar 页面),开发者无需手动判断。

replace — 替换当前页面

await router.replace('/pages/login/login')await router.replace({ name'home' })

对应 uni.redirectTo。替换 TabBar 页面时自动切换为 uni.switchTab(会关闭所有非 Tab 页面)。

relaunch — 关闭所有页面并打开目标页面

// 路径字符串await router.relaunch('/pages/index/index')// 命名路由 + 查询参数await router.relaunch({ name'login', query: { redirect'/about' } })

对应 uni.reLaunch,常用于:

  • 退出登录后跳转登录页
  • 从深层页面返回首页
  • 重置整个页面栈

设计细节

  • TabBar 页面自动切换为 uni.switchTab
  • uni.reLaunch
     不支持动画参数,传入时输出警告
  • 不进行重复导航检测(清栈场景下目标页面可能就是当前页面)
  • 走完整守卫链(beforeEach → beforeEnter → beforeResolve → afterEach)

back — 返回上一页

await router.back() // 返回上一页await router.back(2// 返回两级await router.back(1, { type'slide-out-left' }) // 指定动画

back() 执行完整的守卫链,守卫可以中止或重定向返回操作。若未指定动画参数,将使用目标页面的 meta.animation 作为默认动画。

重复导航检测

push 到当前页面时自动拒绝并抛出 NAVIGATION_DUPLICATED 错误,避免重复入栈。

注意:relaunch 不进行重复导航检测。因为清栈场景下目标页面可能就是当前页面(如"返回首页"),拒绝此类导航没有意义。

并发导航排队

多次并发导航自动排队,前一次完成后再执行下一次,避免页面栈混乱。


二、路由守卫

路由守卫是 uni-router 最核心的能力,提供完整的导航拦截机制。

全局前置守卫 — beforeEach

在每次导航前执行,常用于登录验证:

router.beforeEach((to, from, next) => {if(to.meta.requireAuth && !isLoggedIn()) {next({ name'login', query: { redirect: to.fullPath } })else {next()}})

全局解析守卫 — beforeResolve

在所有前置守卫和路由独享守卫完成后执行,适合需要确保所有守卫都已通过的场景:

router.beforeResolve((to, from, next) => {// 所有前置守卫已通过,导航即将执行next()})

全局后置钩子 — afterEach

在导航完成后执行,不影响导航结果,适合埋点、标题设置等操作:

router.afterEach((to, from) => {if (to.meta.title) {		uni.setNavigationBarTitle({ title: to.meta.title as string })}})

路由独享守卫 — beforeEnter

在路由配置中定义,仅对该路由生效:

const routes = [{		path'pages/admin/admin',		name'admin',		meta: { requireAuthtrue },beforeEnter(to, from, next) => {if (isAdmin()) next()else next({ name'forbidden' })}}]

守卫执行顺序

beforeEach → beforeEnter → beforeResolve → 导航执行 → afterEach

守卫重定向

守卫中调用 next(location) 可重定向到其他路由,支持多级重定向(最大深度 10):

router.beforeEach((to, from, next) => {if (to.meta.requireAuth && !isLoggedIn()) {next({ name'login' }) // 重定向到登录页else {next()}})

守卫超时保护

通过 guardTimeout 配置项(默认 10000ms),防止守卫未调用 next() 导致导航永久挂起:

const router = createRouter({	routes,	guardTimeout15000 // 15 秒超时})

三、命名路由

通过 name 字段进行导航,避免硬编码路径字符串:

// 路由配置const routes = [{ path: 'pages/index/index', name: 'home', meta: { isTab: true } },{ path: 'pages/about/about', name: 'about', meta: { title: '关于' } }]// 导航时使用名称await router.push({ name'about', query: { id'1' } })

配合 @meng-xi/vite-plugin 自动生成的类型声明,路由名称可获得 TypeScript 自动补全和类型检查。


四、路由元信息

meta 字段支持页面标题、权限标记、TabBar 标识、导航动画等自定义数据:

interface RouteMeta {	title?: string // 页面标题	isTab?: boolean // 是否为 TabBar 页面	requireAuth?: boolean // 是否需要登录认证	animation?: NavigationAnimation // 默认导航动画(仅 App 端)[keystring]: unknown // 自定义扩展字段}

使用示例:

const routes = [{ path: 'pages/index/index', name: 'home', meta: { isTab: true, title: '首页' } },{ path: 'pages/about/about', name: 'about', meta: { animation: { type'fade-in' } } },{ path: 'pages/admin/admin', name: 'admin', meta: { requireAuth: true } }]

五、导航动画

完整的页面切换动画支持,仅 App 端生效,其他平台自动忽略。

NavigationAnimation 接口

interface NavigationAnimation {	typeUniAnimationType // 动画类型	duration?: number // 持续时间(ms),默认 300}

UniAnimationType — 完整动画类型

显示动画(navigateTo)
关闭动画(navigateBack)
slide-in-rightslide-out-right
slide-in-leftslide-out-left
slide-in-topslide-out-top
slide-in-bottomslide-out-bottom
fade-infade-out
zoom-outzoom-in
zoom-fade-outzoom-fade-in
pop-inpop-out
auto
 / none
auto
 / none

三种使用方式

1. 导航时传入动画参数

await router.push({ path'/pages/about/about', animation: { type'slide-in-bottom' } })await router.back(1, { type'slide-out-left', duration500 })

2. 路由级默认动画(meta.animation)

const routes = [{ path: 'pages/about/about', name: 'about', meta: { animation: { type'fade-in' } } }]

3. RouterLink 声明式动画

<RouterLinkto="/pages/about/about":animation="{ type: 'slide-in-bottom' }">  底部滑入</RouterLink>

动画优先级

push/replace/back 调用时传入 > meta.animation > uni 默认值

各导航方式对动画的支持

导航方式
对应 uni API
支持动画
说明
pushuni.navigateTo
传入 animationType/duration
replaceuni.redirectTo
uni.redirectTo 不支持动画参数
relaunchuni.reLaunch
uni.reLaunch 不支持动画参数
backuni.navigateBack
传入 animationType/duration
TabBar 页面
uni.switchTab
uni.switchTab 不支持动画参数

传入动画参数但不支持时,路由器会输出 console.warn 提醒开发者。


六、uni API 拦截

通过 interceptUniApi 选项拦截原生导航 API,确保路由守卫始终生效:

const router = createRouter({	routes,	interceptUniApitrue // 拦截 uni.navigateTo 等原生 API})

启用后,以下调用将被拦截并转由路由器处理:

// 这两种方式等价,都会经过守卫链uni.navigateTo({ url'/pages/about/about' })router.push('/pages/about/about')

拦截原理

  • 通过 uni.addInterceptor 注册拦截器
  • 路由器内部发起的 API 调用通过计数器标记放行,避免重复执行守卫
  • 外部调用被拦截后,阻止原始 API 执行,转由 router.push/replace/relaunch/back 执行完整守卫链
  • 低版本小程序基础库兼容:修改 args.url 为空字符串,防止忽略返回值继续执行

拦截范围

API
拦截后行为
uni.navigateTo
→ router.push
uni.redirectTo
→ router.replace
uni.switchTab
→ router.push
uni.reLaunch
→ router.relaunch
uni.navigateBack
→ router.back

七、组合式 API

useRouter — 获取路由器实例

import { useRouter } from '@meng-xi/uni-router'const router = useRouter()await router.push('/pages/about/about')

必须在 Vue 组件的 setup() 中调用,通过 Vue 的 inject 机制获取路由器实例。

useRoute — 获取响应式路由位置

import { useRoute } from '@meng-xi/uni-router'const route = useRoute()// route 是 Ref<RouteLocation>,路由变化时自动更新console.log(route.value.path)console.log(route.value.query)

同一 router 实例共享同一个响应式 ref,通过 WeakMap 缓存避免重复创建。


八、RouterLink 组件

基于 uni-app navigator 封装的声明式导航组件:

<template>	<!-- 路径跳转 -->	<RouterLinkto="/pages/about/about">关于页面</RouterLink>	<!-- 命名路由 + 替换模式 -->	<RouterLink:to="{ name: 'about' }"replace>替换导航</RouterLink>	<!-- relaunch 模式(关闭所有页面并打开目标页面) -->	<RouterLinkto="/pages/index/index"relaunch>返回首页</RouterLink>	<!-- 带动画参数 -->	<RouterLinkto="/pages/about/about":animation="{ type: 'fade-in' }">淡入动画</RouterLink>	<!-- 错误处理 -->	<RouterLink:to="{ name: 'admin' }" @error="onNavError">管理后台</RouterLink></template><scriptsetup>import { RouterLink } from '@meng-xi/uni-router/components/RouterLink.vue'function onNavError(error) {	console.log('导航失败:', error.code)}</script>

Props

Prop
类型
默认值
说明
toRouteLocationRaw
-
目标路由位置
replacebooleanfalse
是否使用替换模式导航
relaunchbooleanfalse
是否使用 relaunch 模式导航,优先级高于 replace
animationNavigationAnimationundefined
导航动画(仅 App 端)
hoverClassstring'navigator-hover'
按下时的样式类
hoverStopPropagationbooleanfalse
阻止祖先节点点击态
hoverStartTimenumber50
按住后出现点击态时间
hoverStayTimenumber600
松开后点击态保留时间

Events

事件
参数
说明
errorNavigationFailure
导航失败时触发

九、路由状态同步

当页面通过浏览器后退、物理返回键等非路由器方式切换时,路由器的 currentRoute 可能与实际页面不同步。syncRoute() 方法从 uni-app 页面栈中读取当前页面信息并更新路由状态:

// 在每个页面的 onShow 生命周期中调用import { onShow } from '@dcloudio/uni-app'import { useRouter } from '@meng-xi/uni-router'const router = useRouter()onShow(() => {	router.syncRoute()})

onRouteChange — 路由变化监听

注册路由状态变化监听器,导航完成和状态同步时都会触发:

router.onRouteChange((to, from) => {console.log(`路由变化: {to.path}`)})

与 afterEach 不同,onRouteChange 也会捕获 syncRoute() 触发的状态变化。


十、错误处理

完整的错误体系

// RouterError — 路由错误基类classRouterErrorextendsError{readonly code: RouterErrorCode}// NavigationFailure — 导航失败,包含来源和目标信息classNavigationFailureextendsRouterError{readonly to: RouteLocationreadonly from: RouteLocationreadonly cause?: unknown}

错误码

错误码
说明
NAVIGATION_ABORTED
导航被守卫中止或守卫超时
NAVIGATION_CANCELLED
导航被取消(守卫异常或重定向超限)
NAVIGATION_DUPLICATED
重复导航到当前位置
ROUTE_NOT_FOUND
未找到匹配的路由
NAVIGATION_API_ERROR
uni 导航 API 调用失败
SETUP_ERROR
路由器初始化或使用方式错误

全局错误捕获

router.onError((error, to, from) => {if (error.code === 'NAVIGATION_ABORTED') {console.log('导航被中止')}})

十一、TypeScript 类型提示

配合 @meng-xi/vite-plugin 自动生成的类型声明,为路由导航提供类型安全:

// 路由名称自动补全router.push({ name'pagesIndexIndex' }) // ✅ 自动补全router.push({ name'invalidName' }) // ❌ 类型错误// 路径自动补全router.push({ path'/pages/index/index' }) // ✅ 自动补全router.push({ path'/invalid/path' }) // ❌ 类型错误

通过模块增强(module augmentation)填充 RouteNameMap 接口即可启用:

declare module '@meng-xi/uni-router' {interface RouteNameMap {		pagesIndexIndex: { path'/pages/index/index'meta: { titlestringisTabtrue } }		pagesAboutAbout: { path'/pages/about/about'meta: { titlestring } }}}

API 速查

核心

API
说明
createRouter(options)
创建路由器实例
useRouter()
获取路由器实例(组合式 API)
useRoute()
获取响应式路由位置(组合式 API)
RouterLink
声明式导航组件

Router 实例方法

方法
说明
router.push(location)
导航到新页面
router.replace(location)
替换当前页面
router.relaunch(location)
关闭所有页面并打开目标页面
router.back(delta?, animation?)
返回上一页或多级页面
router.beforeEach(guard)
注册全局前置守卫
router.beforeResolve(guard)
注册全局解析守卫
router.afterEach(guard)
注册全局后置钩子
router.onRouteChange(fn)
注册路由变化监听器
router.onError(handler)
注册错误处理回调
router.syncRoute()
同步路由状态与页面栈
router.resolve(location)
解析路由位置(不导航)
router.getRoutes()
获取所有路由配置
router.hasRoute(name)
检查路由是否存在

RouterOptions

选项
类型
默认值
说明
routesRouteConfig[]
-
路由配置列表
strictbooleantrue
严格模式,未匹配路由时抛出异常
interceptUniApibooleanfalse
拦截原生导航 API
guardTimeoutnumber10000
守卫超时时间(ms)

与 pages.json 的关系

职责
pages.json
uni-router
页面注册
必须声明
不负责
路由导航
uni.navigateTo
 等
push
 / replace / relaunch / back
路由守卫
不支持
beforeEach
 等
路由元信息
不支持
meta
 字段
命名路由
不支持
name
 字段
导航动画
手动传参
animation
 + meta.animation

快速开始

1. 安装

pnpm add @meng-xi/uni-router

2. 配置路由

// src/router.config.tsimport type { RouteConfig } from '@meng-xi/uni-router'const routesRouteConfig[] = [path'pages/index/index'name'home'meta: { isTabtruetitle'首页' } },path'pages/about/about'name'about'meta: { title'关于' } },path'pages/login/login'name'login'meta: { title'登录' } },path'pages/admin/admin'name'admin'meta: { requireAuthtrue } }]export default routes

3. 创建路由器

// src/main.tsimport { createSSRApp } from 'vue'import { createRouter } from '@meng-xi/uni-router'import routes from './router.config'import App from './App.vue'const router = createRouter({	routes,	stricttrue,	interceptUniApitrue,	guardTimeout15000})// 注册全局守卫router.beforeEach((to, from, next) => {if (to.meta.requireAuth && !isLoggedIn()) {next({ name'login' })else {next()}})router.afterEach(to => {if (to.meta.title) {		uni.setNavigationBarTitle({ title: to.meta.title as string })}})export function createApp() {const app = createSSRApp(App)	app.use(router)return { app }}

4. 在页面中使用

<template>	<view>		<text>当前路径: {{ route.path }}</text>		<button @click="goAbout">跳转关于</button>		<button @click="goHome">返回首页</button>		<button @click="goBack">返回</button>	</view></template><scriptsetup>import { useRouter, useRoute } from '@meng-xi/uni-router'const router = useRouter()const route = useRoute()async function goAbout() {	try {		await router.push({ name'about'query: { from'home' } })catch (e) {		console.log('导航失败:', e.code)	}}async function goHome() {	// 关闭所有页面并打开首页	await router.relaunch({ name'home' })}async function goBack() {	await router.back()}</script>

平台兼容性

平台
支持情况
uni-app (Vue 3)
✅ 完全支持
uni-app H5 (Safari / Chrome)
✅ 完全支持
uni-app App (Android / iOS)
✅ 完全支持(动画仅 App 端生效)
uni-app 小程序(微信/支付宝/百度/字节等)
✅ 完全支持
uni-app x Web
✅ 支持
uni-app x 小程序
✅ 支持
uni-app x App (Android / iOS / Harmony)
❌ 不支持(无 JS 引擎,需 UTS 重写)

版本演进

版本
核心变更
v1.0.0
路由器核心、命名路由、路由守卫、组合式 API、错误处理、uni 拦截
v1.1.0
守卫超时保护、路由变化监听、RouterLink 错误事件
v1.1.1
back()
 守卫修复、syncRoute() query 比较、onUnmount 兼容
v1.1.2
getCurrentPages()
 环境保护、拦截器低版本兼容
v1.2.0
导航动画(NavigationAnimation、meta.animation、RouterLink prop)
v1.3.0
relaunch
 导航方式、RouterLink relaunch prop、reLaunch 拦截

总结

@meng-xi/uni-router 为 uni-app 开发者提供了一套完整的路由管理方案:

  • vue-router 风格 API
    push / replace / relaunch / back,零学习成本
  • 完整的守卫体系
    :beforeEach / beforeResolve / afterEach / beforeEnter,支持重定向和超时保护
  • 导航动画
    :三种使用方式,优先级清晰,仅 App 端生效
  • uni API 拦截
    :覆盖全部五种导航 API,确保守卫始终生效
  • TypeScript 类型提示
    :路由名称和路径自动补全
  • 错误处理体系
    :完整的错误码和全局错误捕获
  • 组合式 API
    :useRouter / useRoute,响应式路由状态
  • 路由状态同步
    :处理浏览器后退、物理返回键等场景
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-14 14:36:26 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/746730.html
  2. 运行时间 : 0.134822s [ 吞吐率:7.42req/s ] 内存消耗:4,791.13kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ec9d6eb6a7982b3af3aa74c824068044
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000546s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000712s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001833s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000279s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000486s ]
  6. SELECT * FROM `set` [ RunTime:0.003715s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000614s ]
  8. SELECT * FROM `article` WHERE `id` = 746730 LIMIT 1 [ RunTime:0.000480s ]
  9. UPDATE `article` SET `lasttime` = 1781418986 WHERE `id` = 746730 [ RunTime:0.004458s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000236s ]
  11. SELECT * FROM `article` WHERE `id` < 746730 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000423s ]
  12. SELECT * FROM `article` WHERE `id` > 746730 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000374s ]
  13. SELECT * FROM `article` WHERE `id` < 746730 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000919s ]
  14. SELECT * FROM `article` WHERE `id` < 746730 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000743s ]
  15. SELECT * FROM `article` WHERE `id` < 746730 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.028591s ]
0.138837s