一:Vue.use()的作用
1. 扩展Vue的功能 : 比如添加全局过滤器,添加全局组件
2. 示例: Vue.use(vuex),Vue.use(vueRouter),Vue.use(Vant) … 从拓展vue的功能意义来说vuex,vueRouter,Vant 做可以叫做vue的插件
二: 封装过程
1. 创建文件 src/utils/formateDate.js
这个文件是把日期格式化的函数单独封装成一个模块,以供在不同项目中使用
export const relativeTime = val => {
const t = new Date(val)
const diff = Date.now() - t.getTime()
const year = Math.floor(diff / (1000 * 3600 * 24 * 365))
if (year) {
return `${year}年前`
}
const month = Math.floor(diff / (1000 * 3600 * 24 * 30))
if (month) {
return `${month}月前`
}
const day = Math.floor(diff / (1000 * 3600 * 24))
if (day) {
return `${day}天前`
}
const hour = Math.floor(diff / (1000 * 3600))
if (hour) {
return `${hour}小时前`
}
const minute = Math.floor(diff / (1000 * 60))
if (minute) {
return `${minute}分钟前`
} else {
return '刚才'
}
}
export default {
install: function (Vue) {
// console.log('install', val === Vue)
// 补充定义全局过滤器
// Vue.filter('relativeTime', (val)=>{})
Vue.filter('relativeTime', relativeTime)
}
}
2. 在main.js里面导入
// 省略其他...
import obj from '导入formateDate.js文件'
Vue.use(obj)
3. 运行原理
a) 相当于install这个对象呗默认导出了,然后在main.js里面obj又将它导入,紧接着就是
Vue.use(obj) .
b) 那么Vue.use(obj)又是怎么工作的呢?
Vue.use()会找到install方法,同时把Vue传进来给函数的形参,然后在函数里面
(‘relativeTime’, relativeTime),传入了一个全局的时间过滤器,这个时候Vue就被我们拓展
了一个全局过滤器的功能出来,这样直接就可以Vue.use() 了
图示说明: