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 有趣而诡异的数组
Apr 06 Javascript
JavaScript 直接操作本地文件的实现代码
Dec 01 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
Feb 23 Javascript
JavaScript获取flash对象与网上的有所不同
Apr 21 Javascript
高性能JavaScript模板引擎实现原理详解
Feb 05 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
Apr 08 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
Jun 20 Javascript
jquery实现多次上传同一张图片
Jan 09 Javascript
简单谈谈Javascript函数中的arguments
Feb 09 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
Apr 13 Javascript
vue实现登录后页面跳转到之前页面
Jan 07 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
Apr 11 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
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
php图像验证码生成代码
2017/06/08 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
javascript import css实例代码
2008/07/18 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
Swift中的协议(protocol)学习教程
2016/07/08 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
小学科学教学计划
2015/01/21 职场文书
学校社团活动总结
2015/05/07 职场文书
田径运动会广播稿
2015/08/19 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
前端JavaScript大管家 package.json
2021/11/02 Javascript
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏