# v-base-plugins
 
``` bash
# install
 npm i v-base-plugins --save
 npm start
#引入
import myPlugin from 'v-base-plugins'
Vue.use(myPlugin)

 
 
##topbar组件
###在相应页面引入组件
#```
<topbar :isBack="true" :defclass="defTopbarClass()" title="标题信息"   :fixed="fixed" search>
        <div slot="back">
          <span class="p-title">中国</span>
          <i  class="iconfont arrow-up icon-style" style="color: #fff;font-size: 20px;"></i>
        </div>                
        <div slot="search">
            <input slot="search" class="uni_searchIpt flex1" @input="bindInput" type="text" placeholder="搜索" placeholder-style="color: rgba(255,255,255,.5);" />
            <i class=" iconfont sousuo search-icon"></i>
        </div>                     
        <i @click="gohaoyou" slot="string" class="iconfont dingwei icon-style" style="color: #fff;font-size: 20px;"></i>
        <span slot="string" class="p-title" style="padding-left: 0.5rem;">找车</span>       
    </topbar>
#```
###topbar组件传入参数
#```
isBack: { type: [Boolean, String], default: true },//左侧是否显示返回按钮
fixed: {type: Boolean, default: true},//是否固定
title: { type: String, default: '' },//中间标题
search: { type: [Boolean, String], default: false },//是否需要搜索框,有搜索框,则不会显示中间标题
topStyle: {type:String, default:''}, //自定义样式
#```
###topbar使用组件插槽slot
1. name="back"  //左侧块插槽
2. name="search"  //中间块插槽 
3. name="iconfont" name="string" name="image" //右侧图标、文字、logo插槽   
***topbar组件分为左、中、右三块,根据以上配置可以最大程度灵活的自定义顶部导航栏***
效果展示
 
 

##mult-pop组件
###在相应页面引入组件:<mult-pop ref="multPop"></mult-pop>
###mult-pop组件根据需求传入opts参数对象,会与默认defaultOptions参数对象进行合并处理
#```
{
  defaultOptions: { //默认对象参数
      isVisible: false,       //是否显示弹窗,Boolean类型                    
      title: '',              //标题,String类型
      titleStyle: '',       //标题样式,String类型
      content: '',            //内容,String类型,可以传入富文本      
      contentClass: '',       //内容样式,String类型
      style: null,            //自定义弹窗样式,String类型
      skin: '',               //弹窗风格,String类型 weixin(默认)| toast
      icon: '',               //弹窗图标,String类型  success(默认) | info | error | loading
      iconStyle: '',       //图标样式,String类型
      xclose: '',          //自定义关闭按钮,String类型,  btn | icon   可以传入富文本                  
      shade: true,            //遮罩层,Boolean类型
      shadeClose: false,       //点击遮罩关闭,Boolean类型
      opacity: '',            //遮罩透明度,String类型
      time: 0,                //自动关闭秒数,Number类型
      endCallback: null,              //销毁弹窗回调函数 Function                   
      anim: 'scaleIn',        //弹窗动画  scaleIn(默认) | fadeIn | shake | top | right | bottom | left
      position: '',           //弹窗位置  top | right | bottom | left   
      btnsColumn: false,       //按钮是否换行竖直排列                
      btns: [                  //按钮数组集合,默认null
        {
            text: '取消',
            style: 'color: #2a83f2',
            onTap() {
                multPop.close();
            }
        },
        {
            text: '确定',
            style: 'color: #2a83f2',
            onTap() {
                .....
            }
        }
    ],  
  },
  opts: {},//传入对象参数
  timer: null
}
#```
###mult-pop组件传入参数示例
#```
let multPop = this.$refs.multPop
this.$refs.multPop.show({
  skin: 'toast',
  content: 'success',
  icon: 'success', //success | info | error | loading
  shade: false,
  time: 3,
})
multPop.show({
    skin: 'weixin',
    title: '开启新邮件提醒',
    content: '为了保证新邮件能及时收到提醒,请前往系统 [设置] - [电池] 中关闭应用锁屏清理。',
    shadeClose: false,    
    btns: [
        {
            text: '取消',
            style: 'color: #2a83f2',
            onTap() {
                multPop.close();
            }
        },
        {
            text: '前往设置',
            style: 'color: #2a83f2',
            onTap() {
                console.log('您点击了前往设置!');
            }
        }
    ]
})
multPop.show({
          skin: 'weixin',
          //title: '发现新版本',
          titleStyle:"padding-bottom: 0;text-align: left;",
          content: '123456789为群成员,<br/>请保护隐私',
          style:"width:80%",
          shadeClose: true,
          opacity:0.5,
          position:"center",
          btnsColumn:true,
          xclose:'btn',
          btns: [
              {
                  text: '@Ta',
                  style: 'color: #2a83f2;width: 100%;',
                  onTap() {
                      console.log('关注');
                      multPop.close();
                  }
              },
              {
                  text: '查看Ta的朋友圈',
                  style: 'color: #2a83f2;border-top: 1px solid #eee;width: 100%;',
                  onTap() {
                      console.log('加入黑名单');
                  }
              },
              {
                  text: '加入黑名单',
                  style: 'color: red;border-top: 1px solid #eee;width: 100%;',
                  onTap() {
                      console.log('加入黑名单');
                  }
              }
              
          ],
          endCallback:function(){
            console.log('销毁了!');
          }
      })
#```
效果展示

            

            

##bottomTab组件
###在相应页面引入组件:<mubottom-tab :tabsArr="tabsArr"></mubottom-tab>
###bottomTab组件传入参数
#```
exact:false  //是否启用router-link严格匹配模式
tabStyle:{},//自定义tabs样式,String类型
tabsArr:[
  {
    text:"",//tab文字,String类型,默认空
    path:"",//路由地址,String类型,默认空
    iconName:"",//tab字体图标名字,String类型,默认空
    color: '',//自定义tab文字、图标颜色,String类型,默认空
    
    num:6,//badge中数字,[Boolean, Number]类型,默认false,
          ***num:false不显示badge;num:true显示badge,不带数字;num:number显示badge,带数字,大于99显示···***
    },
]
#```
***tabsArr参数最好存储在vuex中,如果没有使用vuex,建议上升为全局变量***
###topbar组件传入参数示例
#```
tabsArr=[
  {text:"首页",path:"/index",iconName:"shouye",color: 'rgb(31, 146, 31)',style:{},num:6},
  {text:"通讯录",path:"/dev-text",iconName:"renwu",color: 'rgb(31, 146, 31)' },
  {text:"消息",path:"/dev-text2",iconName:"xiaoxi",color: 'rgb(31, 146, 31)',num:true},
  {text:"我的",path:"/dev-text3",iconName:"wode", color: 'rgb(31, 146, 31)'}
]
#```
效果展示

            

##calendar组件
###在相应页面引入组件:<calendar :caleShow="caleShow" :caleData="calendarObj" @getChooseDate="chooseDate"></calendar>
###calendar组件传入参数
#```
caleShow:{ type: Boolean, default: false },//是否显示日历
textShow:{ type: Boolean, default: false },//是否显示选中日期的标识文字
caleData: {type:Object, default:{         //选中日期的标识数据对象
    key:{ type: String, default: "" },      //数据对象id
    text:{ type: String, default: "" },     //日期的文字标识
    style:{ type: String, default: "" },    //日期标识的样式控制
    show:{ type: Boolean, default: false }  //日期标识的显示控制
}}, 
getChooseDate:{type: Function, default:  } //选中日期回调函数 Function 
#```
***calendar可以根据传入的不同参数caleData进而对选择日期进行标识,通过自定义事件拿到标识的日期,非常灵活***
###calendar组件传入参数示例
#```
<div class="select-cale">
          <span>排班:</span>
          <select class="cale-select" @change="selectVal">
            <option>请选择</option>
            <option v-for="(item,index) in selectsArr"  :key="index" :value="item.key">{{ item.text }}</option>             
          </select>
      </div>
this.selectsArr=[
        {key:"1",text:"中",style:"width:8px;height:8px;border-radius:4px;top:10px;right:12px;",show:false},
        {key:"2",text:"白",style:"width:8px;height:8px;border-radius:4px;top:10px;right:12px;",show:false},
        {key:"3",text:"晚",style:"width:8px;height:8px;border-radius:4px;top:10px;right:12px;",show:false},
        {key:"4",text:"夜",style:"width:8px;height:8px;border-radius:4px;top:10px;right:12px;",show:false},
        {key:"5",text:"休",style:"width:8px;height:8px;border-radius:4px;top:10px;right:12px;",show:false}
      ]
methods:{
  selectVal(ele){
        var that=this;
        for(let i=0;i<that.selectsArr.length;i++){
            if(that.selectsArr[i].key==ele.target.value){
              that.selectsArr[i].show=true;
              that.calendarObj=that.selectsArr[i];
            }
        }
      },
      chooseDate(val){
         console.log(val)
      }
}      
效果展示

    

#```
##toast插件
###toast插件传入参数
#```
option={
  message: '',//toast文字提示,String类型,默认空
  icon: 'loading',//toast图标,String类型  success(默认) | info | error | loading
  time:1, //toast显示时间/s,Number类型,默认空
}
#```
###toast插件调用示例
#```
this.$Toast({message: '显示成功',icon: 'success',time:3 })
this.$Toast.close();//手动关闭
#```
 
 
 
 
 
##mpay组件
###mpay组件传入参数
#```
inputOver:{type: Function, default:  }  //输入成功回调函数(必须),Function类型 
payPopOptions={  
        title: '',       //顶部文字,String类型,默认"请输入支付密码"        
        pwdLength: 6,    //密码长度,Number类型,默认6       
        del: '' ,        //底部删除按钮,String类型,默认svg删除按钮图片
        loadingTxt: '',  //默认等候文字,String类型,默认'请稍候...'
        loadingTime: 1000,   //默认等候时间,Number类型,默认1000/ms  
        resultTime:1000,     //显示结果后,多久重回默认,Number类型,默认1000/ms 
        successTxt: '',      //成功文字,String类型,默认'支付成功'
        failTxt: '',        //失败文字,String类型,默认'支付失败'
}
#```
###mpay组件调用示例
#```
payPopOptions: {
  isShow: false
}
<mpay ref="pay" :payPopOptions="payPopOptions" @inputOver="inputOver"></mpay>
methods: {      
  inputOver (val) {       
    if (val == '111111') {
      this.$refs.pay.$payStatus(true)//支付成功
    } else {
      this.$refs.pay.$payStatus(false)//支付失败
    }        
  },
}
#```
效果展示

              

## hupload使用组件必须传递的参数 options
options: {
    'showProgress': true, // 是否显示进度控制
    'imagePreview': true, // 是否显示图片预览
    'url': 'str', // 上传接口url
    'fileUploadName': 'ajax-upload', // 后台采用是什么名字就传递什么名字
    'limitSize': 1, // 限制文件上传的大小单位是 M
     'receiveUploadMsg': null,              //上传状态回调函数 Function            
}
## dom 组件使用
<hupload :options=options v-on:receiveUploadMsg="receiveUploadMsg"> </hupload>
#js 接受的信息判断
methods: {
    receiveUploadMsg (msg) {
      // msg ....
    }
}
```.........................................................
# hupload使用组件必须传递的参数 options
 Options: {
          isShow: false
        }
#js 接受的信息判断
 inputDown (val) {
         setTimeout(() => {
           console.log(val)
           if (val == '111111') {
             this.$refs.pay.$payStatus(true)
           } else {
             this.$refs.pay.$payStatus(false)
           }
         }, 1000)
       },
效果展示

         

#添加全局资源(自定义指令)
##v-out-click点击DOM元素外事件
#```
Vue.directive('out-click', {
    bind (el, binding, vnode, oldVnode) {
      // 逻辑...
    }
    ...
  })
#```
## v-out-click自定义指令使用示例
<div v-out-click="bindOutClick"></div>
##v-out-click点击DOM元素外事件
#```
methods:{
  bindOutClick(e){
    ...
  },
}
#```
## v-load-more指令使用示例
***v-load-more是监听有固定高度的盒子的滚动加载更多事件,比如可以用在不适合有页码的表格就可以使用下拉加载更多***
<ul v-load-more="bindLoadmore"><li></li>...</ul>
***v-load-more必须绑定在有样式overflow-y:auto的DOM上,即滚动的DOM上,否则监听不到滚动***
#```
methods:{
  bindLoadmore(e){
    ...//加载更多数据
  },
}
#```
#防抖函数debounce
##debounce使用示例
#```
Vue.debounce(fn,time) //fn需要防抖函数,time超出这个时间阈值,也得给客户一个反应的限值
#```
#节流函数throttle
##throttle使用示例
#```
Vue.throttle(fn,wait) //fn需要节流函数,wait时间间隔
#```
***以上使用图标均为阿里图标库中图标,如需自定义图标,替换class类名即可,若显示图标与自定义图标不符,可能是与阿里图标Unicode重复了,更改即可***

vue常用插件集合(常用,但一般UI库又不太能满足)的更多相关文章

  1. vue-cli常用插件集合

    element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI ...

  2. javascript功能插件大集合 前端常用插件 js常用插件

    转载来源:https://github.com/jobbole/aw... 包管理器管理着 javascript 库,并提供读取和打包它们的工具.•npm – npm 是 javascript 的包管 ...

  3. VSCode 前端常用插件集合

    Visual Studio Code 是由微软开发的一款免费.跨平台的文本编辑器.由于其卓越的性能和丰富的功能,它很快就受到了大家的喜爱. 但工欲善其事必先利其器,以下是本人为前端开发收集的常用的vs ...

  4. vscode使用汇总——常用插件、常用配置、常用快捷键

    一.代码提示快捷键设置:(keybindings.json) [ { "key": "ctrl+j", "command": "- ...

  5. javascript-js常用插件集合

    area.js 中国地区分级的js代码  Scripts/crypto.js  CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法               ...

  6. angular 常用插件集合

    md5加密    https://www.npmjs.com/package/md5-typescript angular echarts  https://github.com/xieziyu/ng ...

  7. vim包,已自带所有常用插件及常用命令总结

    /** ****************************************************************************** * @author    Maox ...

  8. 监督学习,无监督学习常用算法集合总结,引用scikit-learn库(监督篇)

    why写这篇blog 最近在接触这方面的知识,但是找了许多的笔记,都感觉没有很好的总结出来,也正好当做是边学习,边复习着走.大佬轻喷.参考书目<python机器学习基础教程> 将分别从以下 ...

  9. IDE常用插件

    IDE 常用插件集合 :

  10. maven常用插件总结

    maven本质上是一个插件框架,几乎所有的功能都是通过各种各样的插件来实现的.maven默认会依据项目类型自动把构建时的各阶段(Lifecycle和phase)自动绑定(Lifecycle Mappi ...

随机推荐

  1. VuePress个人博客搭建

    vuepress概述 VuePress 由两部分组成:第一部分是一个极简静态网站生成器 (opens new window),它包含由 Vue 驱动的主题系统和插件 API,另一个部分是为书写技术文档 ...

  2. 诗词API

    1.js依赖 /** * 今日诗词V2 JS-SDK 1.2.2 * 今日诗词API 是一个可以免费调用的诗词接口:https://www.jinrishici.com */ !function(e) ...

  3. MySQL 嵌套子查询 with子句 from子查询 in子查询 join组合

    一.适用场景和方法 (1)适用场景 考虑查询过程中是否存在以下情况: 查询某些数据时需要分组才能得到,某些数据不需要分组就能得到或者分组条件不同: 查询某些数据时需要where条件,某些列不需要whe ...

  4. 从0开始学习VUE3--01-Vue2与Vue3的不同点

    升级带来的性能提升总结 1.模板编译优化:节点达到一定个数,会自动优化 每次重新渲染,会调用createVnode创建虚拟节点,VUE3会做静态提升,静态节点进行提取,进行优化 2.事件 缓存事件,防 ...

  5. 结构型模式 - 外观模式Facade

    1.tm的NT审核机制,满篇文章哪来的广告? 就算有也是你们自己加的吧?等财富能支持我自己的网站后,就是和你们说再见之时. 2.tm第二遍说,我接着提交,这个审核机制的傻逼设计者或者是程序敲出来的bu ...

  6. Python修改柱状图边缘柱子与图边界的距离

      本文介绍基于Python中matplotlib.pyplot模块,修改柱状图.条形图最两侧的柱子与图像边缘之间距离的方法.   最近,绘制了一个水平的柱状图,但是发现图的上.下边距(不是柱子与柱子 ...

  7. Stochastic Methods in Finance (1)

    Bootcamp Topics related to measure theory. 略去,详见测度论专栏中的文章 Expectations 令 \(X\) 为 \((\Omega, \mathcal ...

  8. js 全屏代码实现方法

    1 /* 全屏方法 2 * ========= 3 <button class="roll-nav roll-right fullscreen"> 4 <i cl ...

  9. vs2019编写代码时的光标变成了黑块,选中字时替换掉了黑块选中的字的解决方法

    这是由于不小心按到了Insert键 解决方法:再按一下Insert就好了. 因为插入键(insert)是一个状态表示键 当你按倒它时,它会进入一个覆盖模式,在光标位置新输入字会替代原来的字:另一种为插 ...

  10. 【Oculus Interaction SDK】(十)在 VR 中使用手势识别

    前言 前段时间 Oculus 的 SDK 频繁更新,很多已有的教程都不再适用于现在的版本了.本系列文章的主要目的是记录现版本常见功能的实现方法,便于自己后续开发.当然,不排除我文章刚写完 SDK 又变 ...