(一)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. AI2(App Inventor 2)离线版服务器(2019.04.28更新)

    我们的目标:搭建一个本地多用户的App Inventor 2 服务器   演示: http://ai2.fsyz.net  [旧 win]     http://ai2n.fsyz.net [新 Ce ...

  2. 一大波开发者福利来了,一份微软官方Github上发布的开源项目清单等你签收

    目录 微软Github开源项目入口 微软开源项目受欢迎程度排名 Visual Studio Code TypeScript RxJS .NET Core 基础类库 CNTK Microsoft cal ...

  3. 使用NSSM把.Net Core部署至 Windows 服务

    为什么部署至Windows Services 在很多情况下,很少会把.Net Core项目部署至Windows服务中,特别是Asp.net Core就更少了.一般情况下,Asp.net Core会部署 ...

  4. matplotlib种类

    matplotlib模板: 1:线图 plot()单线段图 2:多个线图 subplot()Multiple axes (i.e. subplots) are created with the sub ...

  5. HighChar 案例

    Highchars //前台 <script> $(function () { //showChat(); initChat(); showPie(); initPie(); }) fun ...

  6. 搭建基于SornaQube的自动化安全代码检测平台

    一.背景和目的 近年来,随着新业务.新技术的快速发展,应用软件安全缺陷层出不穷.虽然一般情况下,开发者基本都会有单元测试.每日构建.功能测试等环节来保证应用的可用性.但在安全缺陷方面,缺乏安全意识.技 ...

  7. 驰骋工作流引擎 -CCBPM如何自动升级

    关键词:工作流引擎自动升级   工作流自动升级升级步骤设置1,CCBPM把更新分成三类, 应用程序代码更新.数据表结构更新.数据更新.2,CCBPM在您登录流程设计器时自动判断当前的版本与数据库版本是 ...

  8. 关于RecyclerView嵌套导致item复用异常,界面异常的问题

    常规需求: 外层RecyclerView嵌套内层RecyclerView , 在上下滑动的时候会出现item数据以及view的显示异常. 解决办法: 1.重写  getItemViewType  方法 ...

  9. Javascript高级编程学习笔记(98)—— WebGL(4) WebGL上下文(2)

    错误 Javascript与WebGL之间的一个最大区别在于,WebGL的操作一般不会抛出错误 如果希望获取WebGL的错误信息,那么就需要手动调用  gl.getError() 方法 该方法会返回以 ...

  10. Redis常用数据类型和事物以及并发

    Redis数据类型 基本类型(String int): 如 set key value .get key 等 所有命令都是按照 key value keys * 可以将全部数据列出,其中后面的 &qu ...