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 input 数字验证代码
Jul 30 Javascript
JS仿Windows开机启动Loading进度条的方法
Feb 26 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
Jul 05 Javascript
js倒计时简单实现方法
Dec 17 Javascript
js实现(全选)多选按钮的方法【附实例】
Mar 30 Javascript
ajax的分页查询示例(不刷新页面)
Jan 11 Javascript
jquery实现图片平滑滚动详解
Mar 22 jQuery
浅谈Vuejs中nextTick()异步更新队列源码解析
Dec 31 Javascript
jQuery实现列表的增加和删除功能
Jun 14 jQuery
JS异步处理的进化史深入讲解
Aug 25 Javascript
详解从vue-loader源码分析CSS Scoped的实现
Sep 23 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
Mar 16 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
PHP实现链式操作的核心思想
2015/06/23 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
2019/01/22 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
对Django外键关系的描述
2019/07/26 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
快速了解Python开发环境Spyder
2020/06/29 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
家长写给孩子的评语
2014/04/18 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
公司车辆管理制度
2015/08/04 职场文书
SpringBoot Http远程调用的方法
2022/08/14 Java/Android