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 相关文章推荐
jquery监控数据是否变化(修正版)
Apr 12 Javascript
javascript错误的认识不用关心内存管理
Dec 15 Javascript
2014年50个程序员最适用的免费JQuery插件
Dec 15 Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 Javascript
JavaScript File分段上传
Mar 10 Javascript
Node.js实现数据推送
Apr 14 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
Dec 21 Javascript
Vue 实现手动刷新组件的方法
Feb 19 Javascript
微信小程序代码上传、审核发布小程序
May 18 Javascript
vxe-table vue table 表格组件功能
May 26 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
May 27 Javascript
vue组件的路由高亮问题解决方法
May 11 Vue.js
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
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
PHP单链表的实现代码
2016/07/05 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
详解Python装饰器由浅入深
2016/12/09 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
用python生成1000个txt文件的方法
2018/10/25 Python
浅谈python中get pass用法
2019/03/19 Python
使用python计算三角形的斜边例子
2020/04/15 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
十八大报告观后感
2014/01/28 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
环境卫生标语
2015/08/03 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书