uni.addInterceptor,拦截跳转??

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:手动拦截(最笨的办法)

在每个页面的 onLoadonShow 里判断有没有 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 配置/自动生成)
跳转 APIrouter.push()uni.navigateTo() / uni.switchTab()
全局守卫router.beforeEach()uni.addInterceptor() 或 框架封装拦截器
权限控制动态添加路由 (addRoute)隐藏 TabBar 入口 + 跳转拦截
网络请求Axiosuni.request (或封装好的 request.ts)

在 uni-app 里,你不能像 Web 那样“动态生成路由菜单”,你得先把所有页面写死在 pages.json 里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神の愛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值