虽然vue用过也写过几个项目了,但还是没弄明白,为什么有些组件可以 use,有些而不用use呢,比如 vue-router, vuex ,而axios却不用 最近经过自己的研究原来 use实现原理是这样的,(个人看法,不对的话请多指教)
拿一个简单案例来说明使用方法 :大家熟知的 loading加载 动画 如下图
代码如下目录结构如图 
在components里面新建组件 Loading 然后是入口文件 index.js
// 首先引入自己写的Loding.vue组件,这里.vue可以省略
import Loading from './Loading.vue'
/*
关键一步就是 要 install一下,这里面的参数 就是Vue这个构造函数 然后按照全局组件的写法,
把它暴露出去 (当然这些名字可以自定义)
*/
const loadingcomponent = {
install (Vue) {
Vue.component('vloading',Loading)
}
}
export default loadingcomponent
下面我们看下大家比较关心的,如何use使用呢? 在main.js引入
// 引入你的自定义组件 然后就可以use使用了
import loading from './components/Loading'
Vue.use(loading)
然后在你想使用组件的地方直接写组件就行了,注意这里组件的名字 要和 Loading里入口文件 index.js里的 install里定义的名字一样,上面我写的是 vloading,所以使用就如下
Loading.vue代码就是你要做loading的一些样式啊,结构啊什么的 代码如下:
// 这里是随便写的的,因为只是一个展示的
<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>
<script>
export default {
name: "Loading"
}
</script>
<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>就是这么简单,使用方法就是这样,我们也可以自己自定义我们的可以 use的全局组件了
(在下只是个切图仔,如有哪里说错请大神们指点,每天积累一点对自己有用的)