vue自定义全局组件(自定义插件)的用法


Posted in Javascript onJanuary 30, 2018

有时候我们在做开发的时候,就想自己写一个插件然后就可以使用自己的插件,那种成就感很强。博主最近研究element-ui和axios的时候,发现他们是自定义组件,但是唯一有一点不同的是,在用element-ui的时候是使用Vue.use()语句来使用的,而axios的时候,不用Vue.use(),只要import就可以导入进来了,感觉很神奇,细细的发现,原来他们的不同是因为axios里面并没有写install方法,而element-ui就有写这个方法,下面就利用这个install来写一个自己的插件。

首先写这个插件之前生成好一个目录来存放这个插件。博主我是将他放在一个component的loading目录下:

vue自定义全局组件(自定义插件)的用法

在该目录下,按博主习惯是写一个index.js文件还有一个组件loading.vue,index.js里面写的是关于loading.vue的install方法。代码如下所示:

import LoadingComponent from './Loading.vue'

const Loading={
  install:function (Vue) {
    Vue.component('Loading',LoadingComponent)
  }
}
export default Loading

其中install方法表示在main.js中,如果使用Vue.use()方法的话,则该方法默认会调用install方法。在install方法里面还注册了组件,这里面'Loading'指的是外面App.vue使用的组件名,LoadingComponent指的是上面引过来的Loading.vue。之后通过export default Loading导出。

然后Loading.vue代码如下所示:

<template>
  <div class="loading-box">
    Loading...
  </div>
</template>
<script></script>

Loading.vue代码写完后然后就在默认的main.js文件中导入,通过使用Vue.use()方法导入刚刚写好的index.js:

import Vue from 'vue'
import App from './App.vue'
import Loading from './components/loading'
Vue.use(Loading)
new Vue({
 el: '#app',
 render: h => h(App)
})

然后就在App.vue方法里面使用该模板就可以了:

<template>
 <div id="app">
  <Loading></Loading>
 </div>
</template>

你也可以在刚刚的loading.vue文件里面写自己的一些代码,比如写一个日历插件,按钮插件等等。如下面这个:

<template>
  <div class="loader">
    <div class="loader-inner ball-spin-fade-loader">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </div>
</template>
<style scoped>
  .loader{
    width:80px;
    height: 80px;
    margin:50px auto;
  }
  @keyframes ball-spin-fade-loader {
    50% {
      opacity: 0.3;
      -webkit-transform: scale(0.4);
      transform: scale(0.4); }

    100% {
      opacity: 1;
      -webkit-transform: scale(1);
      transform: scale(1); } }

  .ball-spin-fade-loader {
    position: relative; }
  .ball-spin-fade-loader > div:nth-child(1) {
    top: 25px;
    left: 0;
    -webkit-animation: ball-spin-fade-loader 1s 0s infinite linear;
    animation: ball-spin-fade-loader 1s 0s infinite linear; }
  .ball-spin-fade-loader > div:nth-child(2) {
    top: 17.04545px;
    left: 17.04545px;
    -webkit-animation: ball-spin-fade-loader 1s 0.12s infinite linear;
    animation: ball-spin-fade-loader 1s 0.12s infinite linear; }
  .ball-spin-fade-loader > div:nth-child(3) {
    top: 0;
    left: 25px;
    -webkit-animation: ball-spin-fade-loader 1s 0.24s infinite linear;
    animation: ball-spin-fade-loader 1s 0.24s infinite linear; }
  .ball-spin-fade-loader > div:nth-child(4) {
    top: -17.04545px;
    left: 17.04545px;
    -webkit-animation: ball-spin-fade-loader 1s 0.36s infinite linear;
    animation: ball-spin-fade-loader 1s 0.36s infinite linear; }
  .ball-spin-fade-loader > div:nth-child(5) {
    top: -25px;
    left: 0;
    -webkit-animation: ball-spin-fade-loader 1s 0.48s infinite linear;
    animation: ball-spin-fade-loader 1s 0.48s infinite linear; }
  .ball-spin-fade-loader > div:nth-child(6) {
    top: -17.04545px;
    left: -17.04545px;
    -webkit-animation: ball-spin-fade-loader 1s 0.6s infinite linear;
    animation: ball-spin-fade-loader 1s 0.6s infinite linear; }
  .ball-spin-fade-loader > div:nth-child(7) {
    top: 0;
    left: -25px;
    -webkit-animation: ball-spin-fade-loader 1s 0.72s infinite linear;
    animation: ball-spin-fade-loader 1s 0.72s infinite linear; }
  .ball-spin-fade-loader > div:nth-child(8) {
    top: 17.04545px;
    left: -17.04545px;
    -webkit-animation: ball-spin-fade-loader 1s 0.84s infinite linear;
    animation: ball-spin-fade-loader 1s 0.84s infinite linear; }
  .ball-spin-fade-loader > div {
    background-color: #399;
    width: 15px;
    height: 15px;
    border-radius: 100%;
    margin: 2px;
    -webkit-animation-fill-mode: both;
    animation-fill-mode: both;
    position: absolute; }
</style>

效果是一个滚动的圆:

vue自定义全局组件(自定义插件)的用法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
Mar 14 Javascript
windows8.1+iis8.5下安装node.js开发环境
Dec 12 Javascript
Node.js实现Excel转JSON
Apr 24 Javascript
javascript中活灵活现的Array对象详解
Nov 30 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
Dec 02 Javascript
jquery replace方法去空格
May 08 jQuery
JS中利用swiper实现3d翻转幻灯片实例代码
Aug 25 Javascript
jquery tmpl模板(实例讲解)
Sep 02 jQuery
详解基于mpvue微信小程序下载远程图片到本地解决思路
May 16 Javascript
vue使用一些外部插件及样式的配置代码
Nov 18 Javascript
vue+elementUI 实现内容区域高度自适应的示例
Sep 26 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 Javascript
vue2.0之多页面的开发的示例
Jan 30 #Javascript
vue-cli实现多页面多路由的示例代码
Jan 30 #Javascript
jQuery与vue实现拖动验证码功能
Jan 30 #jQuery
5 种JavaScript编码规范
Jan 30 #Javascript
vue源码入口文件分析(推荐)
Jan 30 #Javascript
Vue精简版风格指南(推荐)
Jan 30 #Javascript
详解javascript常用工具类的封装
Jan 30 #Javascript
You might like
PHP网站提速三大“软”招
2006/10/09 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
2017/02/08 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
js实现购物车功能
2018/06/12 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
台湾专柜女包:KINAZ
2019/12/26 全球购物
你对IPv6了解程度
2016/02/09 面试题
优质的学校老师推荐信
2013/10/28 职场文书
微观物理专业自荐信
2014/01/26 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
保密承诺书
2014/03/27 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
谢师宴答谢词
2015/01/05 职场文书
市场督导岗位职责
2015/04/10 职场文书
节约用电倡议书
2015/04/28 职场文书
python基础之爬虫入门
2021/05/10 Python
基于angular实现树形二级表格
2021/10/16 Javascript