当前位置:首页 > 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)
}

自定义指令全局校验

创建全局校验指令:

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

全局校验的注意事项

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

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

uniapp全局校验

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

相关文章

vue实现全局遮罩层

vue实现全局遮罩层

实现全局遮罩层的几种方法 在Vue中实现全局遮罩层可以通过多种方式,以下是几种常见的方法: 使用Vue组件和状态管理 创建一个遮罩层组件,通过Vuex或Pinia管理其显示状态。 <temp…

uniapp 消息推送

uniapp 消息推送

uniapp 消息推送实现方法 使用uniPush服务 uniapp官方提供了uniPush服务,支持iOS、Android及小程序平台的消息推送。需要在manifest.json中配置推送模块,并按…

uniapp模板库

uniapp模板库

uniapp模板库推荐 官方模板库 uni-app官方提供多个模板,涵盖电商、社交、新闻等多个领域。这些模板可直接在HBuilderX中通过新建项目选择,包含基础结构和常用功能模块,适合快速启动项目。…

uniapp设置title

uniapp设置title

设置页面标题的方法 在UniApp中设置页面标题可以通过以下几种方式实现,适用于不同场景和需求。 通过pages.json配置 在pages.json文件中,可以为每个页面单独配置导航栏标题。找到对…

混合uniapp

混合uniapp

混合 UniApp 开发模式 混合 UniApp 开发通常指将 UniApp 与其他原生技术(如原生 iOS/Android 或 Flutter)结合使用,以兼顾跨平台效率和原生性能。以下是常见的混合…

uniapp全局校验

uniapp全局校验

uniapp全局校验的实现方法 在uniapp中实现全局校验可以通过多种方式,主要包括拦截器、全局混入和自定义指令等方法。 使用请求拦截器进行校验 在main.js中配置请求拦截器,对所有请求进行统…