[转载] Vue 中优雅的使用第三方库

全局

优点:不依赖 vue 或任何,避免了挂载 Vue 下有些地方获取不到 this 从而不能用的情况。
缺点:服务端没有 window,window = undefined , window.xx 报错
entry.js

window._ = require('loadsh');

Components.vue

created() {
 const { value } = axios('')
 this.list =   _.isEmpty(value) ? ['暂无数据'] : value
}

挂载至 Vue.prototype

Object.defineProperty

通过 Object.defineProperty 的 descriptor 定义属性默认只读

import axios from 'axios'

Object.defineProperty(Vue.prototype, '$_axios', { value: axios })

Vue.prototype.$_axios

作为对比,直接操作原型也是可以的,但是这样会被重写

import axios from 'axios'

Vue.prototype.$_axios = axios
Vue.prototype.$_axios = 'axios'

// Vue.prototype.$_axios -> 'axios'

插件形式注册

import axios from 'axios';

export default {
  install(Vue, name = '$axios') {
    Object.defineProperty(Vue.prototype, name, { value: axios });
  }
}

entry.js

import AxiosPlugin from './axios.js';
Vue.use(AxiosPlugin, '$axios');

每个文件中引入

多个组件公用的话不建议这种方式

import axios from 'axios';

export default {
  created() {
    axios('')
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值