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 相关文章推荐
由Javascript实现的页面日历
Nov 04 Javascript
JQuery对表单元素的基本操作使用总结
Jul 18 Javascript
5个JavaScript经典面试题
Oct 13 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
jquery实现具有嵌套功能的选项卡
Feb 12 Javascript
使用Node.js处理前端代码文件的编码问题
Feb 16 Javascript
AngularJS之依赖注入模拟实现
Aug 19 Javascript
jQuery对table表格进行增删改查
Dec 22 Javascript
JS 实现banner图片轮播效果(鼠标事件)
Aug 04 Javascript
vue2中引用及使用 better-scroll的方法详解
Nov 15 Javascript
详解关于element级联选择器数据回显问题
Feb 20 Javascript
jQuery 动态粒子效果示例代码
Jul 07 jQuery
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/12/13 PHP
flash用php连接数据库的代码
2011/04/21 PHP
php实现简单洗牌算法
2013/06/18 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
php实现paypal 授权登录
2015/05/28 PHP
简述php环境搭建与配置
2016/12/05 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
解释&amp;&amp;和||在javascript中的另类用法
2014/07/28 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
Vue项目打包编译优化方案
2020/09/16 Javascript
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
python中异常报错处理方法汇总
2016/11/20 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
python之信息加密题目详解
2019/06/26 Python
python xlsxwriter模块的使用
2020/12/24 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
.NET程序员的几道面试题
2012/06/01 面试题
《最后的姿势》教学反思
2014/02/27 职场文书
2014婚礼司仪主持词
2014/03/14 职场文书
财产公证书格式
2014/04/10 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
golang中字符串MD5生成方式总结
2021/07/04 Golang