当前位置:首页 > uni-app

uniapp全局校验

2026-03-04 21:52:34uni-app

uniapp全局校验的实现方法

在uniapp中实现全局校验通常涉及表单验证、权限校验或请求拦截等方面。以下是几种常见的全局校验方法:

表单全局验证

使用uni-forms组件结合自定义校验规则:

// 在main.js中设置全局规则
import uniForms from '@/components/uni-forms/uni-forms.vue'
Vue.component('uni-forms', uniForms)

Vue.prototype.$rules = {
  required: (value, callback) => {
    if (!value) {
      callback(new Error('必填项'))
    } else {
      callback()
    }
  },
  mobile: (value, callback) => {
    if (!/^1[3-9]\d{9}$/.test(value)) {
      callback(new Error('手机号格式错误'))
    } else {
      callback()
    }
  }
}

请求拦截校验

uni.request前进行统一校验:

// 在main.js中封装请求
const request = (options) => {
  // 添加token校验
  if (!store.state.token && !options.noAuth) {
    uni.showToast({ title: '请先登录', icon: 'none' })
    return Promise.reject()
  }

  return uni.request(options)
}

Vue.prototype.$http = request

路由权限校验

通过拦截uni.navigateTo实现:

// 在main.js中重写导航方法
const originalNavigateTo = uni.navigateTo
uni.navigateTo = function(options) {
  if (options.url.includes('/member/') && !store.state.token) {
    uni.showToast({ title: '请先登录', icon: 'none' })
    return uni.redirectTo({ url: '/pages/login/login' })
  }
  originalNavigateTo.call(uni, options)
}

自定义指令全局校验

创建全局校验指令:

uniapp全局校验

// 在main.js中注册指令
Vue.directive('auth', {
  inserted(el, binding) {
    if (!store.state.token) {
      el.style.display = 'none'
    }
  }
})

全局校验的注意事项

  1. 校验逻辑应尽量放在前端轻量级验证,重要校验仍需后端配合
  2. 对于复杂业务场景,建议使用专门的验证库如vee-validate
  3. 移动端校验需要优化错误提示方式,避免频繁弹窗影响体验
  4. 权限校验需要考虑游客模式和登录模式的不同场景

以上方法可以根据实际项目需求组合使用,构建完整的全局校验体系。对于大型项目,建议将校验逻辑模块化,方便维护和扩展。

标签: 全局uniapp
分享给朋友:

相关文章

vue  全局刷新实现

vue 全局刷新实现

全局刷新实现方法 在Vue中实现全局刷新通常涉及重新加载整个应用或特定路由。以下是几种常见方法: 使用window.location.reload() 强制浏览器重新加载当前页面: window.…

uniapp设置背景

uniapp设置背景

设置全局背景样式 在App.vue文件中添加全局样式,使用page选择器设置页面背景。这种方式会影响所有页面背景。 <style> page { background-color:…

uniapp 美颜

uniapp 美颜

uniapp 美颜实现方法 在uniapp中实现美颜功能可以通过多种方式完成,以下是一些常见的方法: 使用原生插件 uniapp支持调用原生插件实现美颜效果,适用于对性能要求较高的场景。需要开发原生…

uniapp 壁纸

uniapp 壁纸

使用 Uniapp 开发壁纸应用的方法 实现壁纸展示与切换功能 在 Uniapp 中,可通过 swiper 组件实现壁纸轮播展示。结合 image 组件加载本地或网络壁纸资源,动态绑定 src 属性实…

uniapp 日志

uniapp 日志

uniapp 日志管理方法 uniapp本身没有内置日志系统,但可以通过以下方式实现日志记录功能: 使用console.log输出日志 开发阶段可以直接使用console.log()、console…

uniapp 网络封装

uniapp 网络封装

uniapp 网络请求封装方法 uniapp 提供了 uni.request 方法进行网络请求,但直接使用可能导致代码重复和维护困难。封装网络请求可以提高代码复用性和可维护性。 基础封装示例 创建一…