vue组件 样式冲突_你碰到过哪些vue,js 组件冲突情况,是怎么解决的?

先占个坑,因为这类问题我也正在研究中,还没有最终的结论。如果关心的人多的话,稍后我会把最新的研究成果在这里分享

就目前的实践经验来说有以下几点体悟

1、vue下的组件冲突最常见的是css样式冲突,但不只如此,如果你引入了两个不同源的组件/组件库,如果他们的组件名称正好有相同的命名可能会存在难以解决的冲突。即后引入的组件将被丢弃

2、css样式冲突在自我管理的代码下可以比较好的解决,毕竟单文件组件中的样式可以设置为组件空间私有(即vue会为这个组件私有的Css类加上特定的前缀来避免与其它全局css干扰)。但是,你引用的第三方组件会引发一些问题。比如很多组件为了样式替换方便,在你使用前需要让你直接引入.css文件,这个是全局的,容易产生冲突。另一个方向,对第三方组件中个别样式的个性化设置,组件往往提供的解决方案是在属性中告诉它使用哪个css类名,组件会贴心的把类名加到特定子dom上去——你肯定能发现,这个css类应该是全局的而不能限制作用域。更槽一点的第三方组件,你就只能通过浏览器调试去对固定类名进行覆盖改写——结果就是更难规避名称冲突。在引用量比较大的时候你就会碰到这种问题——就象癌症一样,你不一定会撞上,但如果撞上就变得很麻烦和棘手

3、组件名称冲突。组件名称冲突是非常容易解决的,因为你可以把引用的组件作为局部组件,在components中声明为其它你喜欢的名称。但是我目前也碰到了难搞的案例。有两个很好的家伙,一个是vuetify,一个是一种非常NB的日历+日期选择组件——V-Calendar,两者都是非常棒(棒到将来必然要经常同时使用),但它们使用了相同的组件名称“VDatePicker”。结果以我制作“vue资源精选”网站并引用过上百个第三方组件/组件库的经验,我还真没能把V-Calendar中的VDatePicker组件单独提取出来作为局部组件。大家都知道一个插件在install中是可以有自己的逻辑的,它可能做了一些事情,导致import单独的组件出来并不能使用。我还尝试了一些vue文档中没写,但看到其它组件源码中写了并有用的vue.use的调用方案,例如Vue.component('aaa', bbb),也同样没有成功。(怎么说我也算经验丰富,所以我还在研究探索中,并不准备放弃)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值