Vue开发插件
(一)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开发插件的更多相关文章
- IDEA安装vue开发插件
前言: 开发免不了要用到开发工具,什么sublime,webstorm,idea的,现在我就说下idea开发神器下安装vue插件进行vue项目的开发吧. idea下载地址:http://www.jet ...
- vue 开发插件流程
UI demo UI 插件汇总 我的github iSAM2016 在练习写UI组件的,用到全局的插件,网上看了些资料.看到些的挺好的,我也顺便总结一下写插件的流程: 声明插件-> 写插件-&g ...
- vue中如何开发插件
1.vue中提供了install方法用来开发插件 官方:Vue.js 的插件应该有一个公开方法 install.这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象. 2.我的插件目 ...
- 开发vue全局插件的4种方式
定义全局插件的步骤 定义全局插件 pluginsUtil.js Vue.js 的插件应当有一个公开方法 install .这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象: ex ...
- 写一个Vue loading 插件
什么是vue插件? 从功能上说,插件是为Vue添加全局功能的一种机制,比如给Vue添加一个全局组件,全局指令等: 从代码结构上说,插件就是一个必须拥有install方法的对象,这个方法的接收的第一个参 ...
- vue开发环境搭建及热更新
写这篇博客的目的是让广大的学者在初入Vue项目的时候少走些弯路,虽然现在有很多博客也有差不多的内容,但是博主在里面添加了一些学习时碰到的小问题.在阅读这篇博客之前,我先给大家推荐一篇文章<入门W ...
- WebStorm配置Vue开发环境
虽然最新版的前端开发利器WebStorm支持了Vue,但是大部分人的WebStorm依然是默认不支持Vue的老版本(比如之前的我),所以需要手动添加WebStorm对Vue的支持.要想让WebStor ...
- vue各种插件汇总
https://blog.csdn.net/wh8_2011/article/details/80497620(copy) Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一 ...
- [总结]vue开发常见知识点及问题资料整理(持续更新)
package.json中的dependencies与devDependencies之间的区别 –save-dev 和 –save 的区别 我们在使用npm install 安装模块或插件的时候,有两 ...
随机推荐
- python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
在学习python语言中用json库解析网络数据时,我遇到了两个编译错误:json.decoder.JSONDecodeError: Expecting property name enclosed ...
- 深入vue - 源码目录及构建过程分析
公众号原文链接:深入vue - 源码目录及构建过程分析 喜欢本文可以扫描下方二维码关注我的公众号 「前端小苑」 “ 本文主要梳理一下vue代码的目录,以及vue代码构建流程,旨在对vue源码整 ...
- ASP.NET Core中使用GraphQL - 最终章 Data Loader
ASP.NET Core中使用GraphQL - 目录 ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间 ...
- USB总线标准
1.USB总线类型: OHCI(Open Host Controller Interface)是支持USB1.1的标准,但它不仅仅是针对USB,UHCI(Universal Host Controll ...
- osi参考模型(开放系统互连参考模型)
自互联网诞生以来,随着网络飞速发展,用户迫切要求能在不同体系结构的网络空间交换信息,使得不同的网络能够互联起来. 国际化标准组织(International Organization for Stan ...
- express+handlebars 快速搭建网站前后台
最近在重构公司网站,原来网站使用PHP,前后端不分离,添加与更新网站内容仍使用原始方法,先出布局再把调好的布局给PHP后端开发,花时间长,维护不易.因此决定将网站前后端分离,核心功能含网站下单及CRM ...
- MongDB集群容灾方案步骤
MongoDB复制集优/特点支持大数据量.高扩展性.高性能.灵活数据模型.高可用性.同步机制数据复制的目的是使数据得到最大的可用性,避免单点故障引起的整站不能访问的情况的发生,Mongodb的副本集在 ...
- 第二周Python学习笔记
分支结构: ① 单分支结构: 非常简单,if 条件语句,如果为true 则输出结果.否则不输出结果 ② 二分支结构: 条件结果为true则执行语句1,否则就执行语句2 If <条件>: ...
- 【JavaScript动画基础】学习笔记(一)-- 旋转箭头
随着鼠标的移动旋转箭头. requestAnimationFrame 在requestAnimationFrame之前我们可以用setInterval来实现动画的循环: function drawFr ...
- 【RL-TCPnet网络教程】第39章 RL-TCPnet之TFTP服务器
第39章 RL-TCPnet之TFTP服务器 本章节为大家讲解RL-TCPnet的TFTP服务器应用,学习本章节前,务必要优先学习第38章的TFTP基础知识.有了这些基础知识之后,再搞本章节会 ...