前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue-第三方库扩展

Vue-第三方库扩展

作者头像
奋飛
发布2019-08-14 18:03:05
8270
发布2019-08-14 18:03:05
举报
文章被收录于专栏:Super 前端

​ 之前写过一篇 Vue-组件扩展 的文章,通常我们采用 extendsmixins 进行扩展组件;但项目中我们经常还会使用一些第三方库(Lodash, Moment等),如何调用这些工具方法智者见智仁者见仁。

​ 我司现在大部分都是大数据可视化方面的工作,所以在系统中,倡导封装了一批图表的数据转换方法,便于大家的调用和系统的统一。 ​ 在第一个项目中,将这批数据转换方法直接封装到了全局 mixins 中(当然,mixins中还用其他共同业务的处理),但是总有一些模块和页面是不需要这些图表转换方法(需要的模块也并非要全量引入),总觉得不是很合理;于是,在后面的系统中,将这些工具方法单独抽离成 data-factory.js,需要的模块自己调用,但这同时带来了另外一个问题,大部分模块都存在类似的相同代码 import {data2Line, data2Pie} from ‘@/util/data-factory’

全局变量

将这些工具类(第三方库)挂载到window

代码语言:javascript
复制
// 入口文件
window._ = require('lodash')

全局变量遭到了污染,且服务器端渲染时,并不能获取window对象!

单独引入

这是上述提到的我们项目中使用的方式

代码语言:javascript
复制
// 具体页面
import _ from 'lodash'
// 或者独立引入某些方法
import {unzip} from 'lodash'

比较繁琐,需要的页面都需引入,如果后续想删除库,需要找到每一个引用该库的文件并删除该库的引用;同时,如果构建工具没设置正确,可能导致该库的多份拷贝被引用。

挂载到Vue原型上

代码语言:javascript
复制
// 入口文件
import _ from 'lodash';
Object.defineProperty(Vue.prototype, '_', { value: _ });

configurable、enumerable、writable 默认都为false,即不能被改变、删除和赋值,也就是只读的

这里只能通过vue实例调用,注意this指向问题!

代码语言:javascript
复制
setTimeout(() => { // 这里用箭头函数
    this._.head()
})

插件形式

代码语言:javascript
复制
export default {
  install: function(Vue) {
    // 添加全局方法Vue.|资源Vue.directive<>|全局mixin组件选项|Vue.prototype实例方法
  }
}

// 入口文件
Vue.use(...)

https://cn.vuejs.org/v2/guide/plugins.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年07月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 全局变量
  • 单独引入
  • 挂载到Vue原型上
  • 插件形式
相关产品与服务
大数据可视交互系统
RayData 是基于独有的渲染技术,结合云计算、AI、IoT,将大规模多样化的数据融合呈现,实现云数据实时可视化、场景化以及交互的管理方式,从而节省管理成本,提升数据辅助决策的效率。多年来丰富的大型项目交付经验辅以行业卓越的生态能力,使得 RayData 拥有远超行业水准的产品服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档