算是一篇入门总结,借助一个loading的例子,来梳理一下vue的插件
相关API
Vue.use(plugin)安装一个vue插件
Vue.extend(options)创建一个子类构造器
不熟悉这两个插件的可以在官网了解一下,看看一些主要的参数,然后在例子中知道我们要干嘛
step1.思路、知道要做啥
不管是loading插件,还是toast,或者别的根据业务来开发的插件,基本上跑不掉UI,我们首先要知道需要做出什么样的效果,然后确定一个思路入手。
1.写一个最终效果,创建对应的文件夹开发和管理插件
2.整理所需要的API
3.确定需要的参数方法,例如loading时候的标题、控制消失的方法
4.丰富参数来定制化、比如loading的背景色、icon、字体颜色等
简单的确定思路之后,就可以着手开发了
step2. 创建插件模块,全局引入
一般都是plugins文件夹下面会有index.js文件来管理自己开发的插件,然后在main.js引入
import '../plugins'
注意官方文档的一句话该方法【Vue.use()】需要在调用 new Vue() 之前被调用,我们在安装插件的时候,会调用Vue.use方法,所以全局引入我们的插件模块,在创建实例之前会自动查找需要注册的自定义插件。
插件模块的index.js
创建loading模块文件夹
这一步主要是三个事情:
1.创建loading模块
2.插件模块通过Vue.use安装自定义插件
3.全局引入插件
step3.写静态loading效果、通过Vue.extend挂载子类
当你发现你的loading插件可以打印出东西之后,我们就确定了关系是确定了,只需要进一步深入发展了,我们先来写一个静态的loading效果,无非就是一个蒙版遮罩层、一个提示文案,长得好看一些的前端会写一个icon转圈圈 我们的index.vue文件可以简单的写一个蒙版
安装子类 qio黑板!! 我们要把index.vue,引入我们的js文件,来使用vue基础构造器,并且挂载到我们的实例上才可以,那我们继续往下走, 看看怎么构造和挂载
this.$loadingself() 才可以】
step3.扩展
一个插件是不可能这么死板的,我们用别人的都是icon可以自定义、标题可以自定义、还有隐藏的控制方法,所以我们也不能太low,就可以根据自己的需要扩展了。
其实,回想起来就是在调用的时候让使用者传入参数来控制,我们根据传参作出相应的判断即可。 先假装传入一些参数
// .vue文件里面调用的时候
this.$loadingself('小r正在加载了~', {
icon: 'el-close',
success: (res) => {
...
}
})
// 定时器模拟异步
setTimeout(() => {
this.$loadingself.hide() // 挂载一个hide用来消失
}, 2000)
这段代码估计写习惯的人可以是信手拈来了,但是我们传递进去之后,该怎么处理? 我们需要在vue文件中定义好需要的方法和data,然后直接改变或者是通过调用方法传入也是可以的
isShow: false //来控制loading的显示和隐藏
然后在js文件中直接改变即可
最后可以试试点击啊,默认加载各种情况下的loading有没有异常bug,自己有兴趣的话还可以把success的回调,或者给loading加一个渐变动画、或者是加入promise也可以的 本文只算是vue的插件的新手入门demo,可以当作一个小知识点