1. 为什么不用 Axios?非要用 uni.request?
你习惯用 Axios 是因为 Web 端它太香了,但在 uni-app 里,情况变了:
-
底层环境不同:Axios 是基于浏览器
XMLHttpRequest(XHR) 的。而小程序环境压根没有 XHR,也没有 DOM。 -
跨端兼容性:
uni.request是 DCloud 封装的原生 API,它在 App、小程序、H5 上都能跑。 -
Axios 能用吗?:能用,但你需要引入专门适配小程序的适配器(Adapter)。
页面权限怎么整?(核心干货)
在后台管理系统,你会用 router.beforeEach 做全局拦截。在 uni-app 里,方案有三种,级别从低到高:
方案 A:手动拦截(最笨的办法)
在每个页面的 onLoad 或 onShow 里判断有没有 Token,没 Token 就跳登录。
-
缺点: 累死人,代码重复。
方案 B:拦截跳转 API(拦截器机制)
这是最常用的办法。通过 uni.addInterceptor 拦截所有的跳转动作。
JavaScript
// 在 main.js 或 permission.js 中
uni.addInterceptor('navigateTo', {
invoke(args) {
const token = uni.getStorageSync('token')
if (!token && args.url !== '/pages/login/index') {
uni.reLaunch({ url: '/pages/login/index' })
return false // 阻止跳转
}
}
})
方案 C:路由插件(你现在用的 thinglinks 方案)
因为你用了 uni-helper 这一套,它通常配合插件实现了类似 beforeEach 的钩子。
-
在
thinglinks源码里,你找找src/permission.ts或者类似的拦截器文件,它会在页面加载前判断权限。
4. 目录结构与权限对比表
为了让你在 CSDN 上一目了然,建议存下这张表:
| 功能点 | 后台管理 (Vue Web) | uni-app (小程序/App) |
| 路由定义 | router/index.js (JS 定义) | pages.json (JSON 配置/自动生成) |
| 跳转 API | router.push() | uni.navigateTo() / uni.switchTab() |
| 全局守卫 | router.beforeEach() | uni.addInterceptor() 或 框架封装拦截器 |
| 权限控制 | 动态添加路由 (addRoute) | 隐藏 TabBar 入口 + 跳转拦截 |
| 网络请求 | Axios | uni.request (或封装好的 request.ts) |
在 uni-app 里,你不能像 Web 那样“动态生成路由菜单”,你得先把所有页面写死在 pages.json 里。

4421

被折叠的 条评论
为什么被折叠?



