(一)Vue.js的插件应该有一个公开方法:install。 这个方法的第一个参数是Vue构造器,第二个参数是一个可选的选项对象,一般是如下操作:

MyPlugin.install = function (Vue, options) {

// 1. 添加全局方法或属性 Vue.myGlobalMethod = function () { // 逻辑... }

// 2. 添加全局资源 Vue.directive('my-directive', { bind (el, binding, vnode, oldVnode) { // 逻辑... } ... })

// 3. 注入组件 Vue.mixin({ created: function () { // 逻辑... } ... })

// 4. 添加实例方法 Vue.prototype.$myMethod = function (methodOptions) { // 逻辑... } }

})

(二)以下是项目中注册了一个校验的插件:

let Validator = {}
Validator.install = function (Vue, options) {
// 校验非负整数
Vue.prototype.$_checkInterNum = function (rule, value, callback) {
const reg = /^[-]+$/
if (!reg.test(value)) {
return callback(new Error('请输入整数'))
} else {
callback()
}
}
// 校验非负数(0和正数)
Vue.prototype.$_checkSmallNum = function (rule, value, callback) {
// const reg = /^(?!(0[0-9]{0,}$))[0-9]{1,}[.]{0,}[0-9]{0,}$/
const reg = /^\d+(\.{,}\d+){,}$/
if (!reg.test(value)) {
return callback(new Error('请输入非负数'))
} else {
callback()
}
}
// 校验正数
Vue.prototype.$_checkPlusNum = function (rule, value, callback) {
const reg = /([-]\d*(\.\d*[-])?)|(\.\d*[-])/
if (!reg.test(value)) {
return callback(new Error('请输入大于0的数'))
} else {
callback()
}
}
// 校验长度 this.$_length(length)
Vue.prototype.$_length = function (length, isRequired) {
let currentLength = (rule, value, callback) => {
const reg = eval('/^.{1,' + length + '}$/')
if (!value) {
if (isRequired === true) {
return callback(new Error('内容不能为空'))
} else {
callback()
}
} else if (!(reg.test(value))) {
return callback(new Error('长度必须在' + length + '位以内'))
} else {
callback()
}
}
return currentLength
}
// 校验手机号
Vue.prototype.$_checkPhoneNum = function (rule, value, callback) {
const reg = /^[|||||]\d{}$/
if (!value) {
return callback(new Error('请填写手机号'))
} else if (!reg.test(value)) {
return callback(new Error('请填写正确的11位手机号'))
} else {
callback()
}
}
// 校验邮箱
Vue.prototype.$_checkEmail = function (rule, value, callback) {
const reg = /^[a-zA-Z0-9_.-]+@[a-zA-Z0--]+(\.[a-zA-Z0--]+)*\.[a-zA-Z0-]{,}$/
if (!reg.test(value)) {
return callback(new Error('请输入正确邮箱'))
} else {
callback()
}
} // 判断 请求接口中图片cdn是否存在
Vue.prototype.$_requryHascdn = function (prizeItemThumbnail, value, callback) {
var hascdnPath = 'https://hhhh.aaaa.com.cn/portal4'
var hascdnPathnop = 'https://hhhh.aaaa.com.cn'
// var prizeItemThumbnail = this.addAwardForm.prizeItemThumbnail
// var newprizeItemThumbnail
console.log(prizeItemThumbnail)
if (prizeItemThumbnail.indexOf(hascdnPath) != -) {
return prizeItemThumbnail.replace(hascdnPath, '')
// console.log(this.addAwardForm.prizeItemThumbnail,'00')
} else if (prizeItemThumbnail.indexOf(hascdnPathnop) != -) {
return prizeItemThumbnail.replace(hascdnPathnop, '')
} else {
return prizeItemThumbnail
}
} // 验证密码
Vue.prototype.$_checkPwd = function (rule, value, callback) {
const reg = /^[a-zA-Z0-9_-]{,}$/
if (!reg.test(value)) {
return callback(new Error('6-18位,包含数字/字母组合'))
} else {
callback()
}
}
}
export default Validator

(三) 使用方法
form表单经常会用到表单校验,在Vue里如果用的是element-Ui框架的话,通过prop校验

摘自:https://cn.vuejs.org/v2/guide/plugins.html#开发插件

Vue开发插件的更多相关文章

  1. IDEA安装vue开发插件

    前言: 开发免不了要用到开发工具,什么sublime,webstorm,idea的,现在我就说下idea开发神器下安装vue插件进行vue项目的开发吧. idea下载地址:http://www.jet ...

  2. vue 开发插件流程

    UI demo UI 插件汇总 我的github iSAM2016 在练习写UI组件的,用到全局的插件,网上看了些资料.看到些的挺好的,我也顺便总结一下写插件的流程: 声明插件-> 写插件-&g ...

  3. vue中如何开发插件

    1.vue中提供了install方法用来开发插件 官方:Vue.js 的插件应该有一个公开方法 install.这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象. 2.我的插件目 ...

  4. 开发vue全局插件的4种方式

    定义全局插件的步骤 定义全局插件 pluginsUtil.js Vue.js 的插件应当有一个公开方法 install .这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象: ex ...

  5. 写一个Vue loading 插件

    什么是vue插件? 从功能上说,插件是为Vue添加全局功能的一种机制,比如给Vue添加一个全局组件,全局指令等: 从代码结构上说,插件就是一个必须拥有install方法的对象,这个方法的接收的第一个参 ...

  6. vue开发环境搭建及热更新

    写这篇博客的目的是让广大的学者在初入Vue项目的时候少走些弯路,虽然现在有很多博客也有差不多的内容,但是博主在里面添加了一些学习时碰到的小问题.在阅读这篇博客之前,我先给大家推荐一篇文章<入门W ...

  7. WebStorm配置Vue开发环境

    虽然最新版的前端开发利器WebStorm支持了Vue,但是大部分人的WebStorm依然是默认不支持Vue的老版本(比如之前的我),所以需要手动添加WebStorm对Vue的支持.要想让WebStor ...

  8. vue各种插件汇总

    https://blog.csdn.net/wh8_2011/article/details/80497620(copy) Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一 ...

  9. [总结]vue开发常见知识点及问题资料整理(持续更新)

    package.json中的dependencies与devDependencies之间的区别 –save-dev 和 –save 的区别 我们在使用npm install 安装模块或插件的时候,有两 ...

随机推荐

  1. Python创建微信机器人

    微信,一个日活10亿的超级app,不仅在国内社交独领风骚,在国外社交也同样占有一席之地,今天我们要将便是如何用Python来生成一个微信机器人,突然想起鲁迅先生曾经说过的一句话:因为是微信机器人系列的 ...

  2. 面试题-浅谈JavaScript中的This指向问题

    各位小伙伴在面试中被面试官问道this指向问题一定不少吧,同时还被问道apply,call和bind的用法区别,现在,就来简单的聊一聊this到底指向何方. 1.基本概念 MDN的官方解释:与其他语言 ...

  3. Java8新特性之三:Stream API

    Java8的两个重大改变,一个是Lambda表达式,另一个就是本节要讲的Stream API表达式.Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找.过滤.筛选等操作 ...

  4. flex 布局实现固定头部和底部,中间滚动布局

    关键词:display: flex,flex: 1,  overflow-y: scroll; 实现:head 和footer 固定,中间body多了滚动,少了撑满: head和footer宽度根据内 ...

  5. win10环境下如何运行debug

    在学习汇编的时候,会需要用到debug调试程序,但是现在win10默认已经移除了这个插件,我们需要手动安装,下面就告诉大家如何在win10环境下安装debug. 1:准备工具 1.1 DOSBox 1 ...

  6. Android注解框架实战-ButterKnife

    文章大纲 Android注解框架介绍 ButterKnife实战 项目源码下载   一.框架介绍 为什么要用注解框架?  在Android开发过程中,我们经常性地需要操作组件,操作方法有findVie ...

  7. Android中资源的引用

    R.java简单来说就是资源 R.java会自动收录当前应用中所有的资源,并根据这些资源建立对应的ID,包括:布局资源.控件资源.String资源.Drawable资源等 可以理解把所以资源按规则存放 ...

  8. centos7 ambari2.6.1.5+hdp2.6.4.0 大数据集群安装部署

    前言 本文是讲如何在centos7(64位) 安装ambari+hdp,如果在装有原生hadoop等集群的机器上安装,需要先将集群服务停掉,然后将不需要的环境变量注释掉即可,如果不注释掉,后面虽然可以 ...

  9. #Java学习之路——基础阶段二(第四篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  10. 后端MVC和前端MVVC关系详解

    MVC 是后端的分层开发概念: MVVM是前端视图层的概念,主要关注于 视图层分离,也就是说:MVVM把前端的视图层,分为了 三部分 Model, View , VM ViewModel