前言:VUE目前已经是大前端开发的必学知识了,用起来简单、方便、快捷;数据绑定等各种特性让后端开发也可以快速的上手;优秀的前端框架,element-ui等。那其实VUE也有一些问题,因为大部分都在用第三方的组件,那么这时候其实就有一个版本更新迭代的问题了。
如何发生的?
我们在今天进行了线上前端项目的更新,发布之后,在测试一个拖拽模块的时候发现,定位完全错乱。
定位问题
针对有问题的层级进行对比发现,线下渲染之后的代码:
divclass=xxstyle=position:absolute;left:px;top:px;/div
我们在看线上的渲染之后代码:
divclass=xxstyle=transform:translate(xxxxx);/div
思路
查看线上和本地引入的js查看本地代码查看Git提交记录以上检查完之后,没有任何异常,因为根本无任何人更新过那个代码。然后就比较头大了...
查看拖拽组件
终于看出点问题,该组件在2天内升级过小版本,但是并未说明升级了什么;
经过线上与本地的测试,发现该组件把默认为绝对定位的方式给修改为了translate,这时候的定位就出现了严重的偏移。
查看package.json
发现使用了“^”
^2.1.0解释:如果在一个新环境下去执行npminstall,那么会去寻找2.x.x的最新版本
这时候就可以很明白了,本地使用的是2.1.0版本,但是线上默认用了2.1.2版本,导致了不向下兼容问题。
解决
在开发的过程中,我们使用了组件的时候尽量去使用当前的版本,不要使用自动这种升级的方式,以避免出现这种不控的BUG,还很难定位问题;其实这个问题定位花费了2个小时...
扩展
^代表从1.x.x版本去寻找最新的,但不会突破1所以同样,如果是2,那就是2.x.x最新的版本
~代表从1.1.x版本去寻找最新的,但不会突破1.1所以同样,如果1.2,那就是1.2.x最新版本
1.1.0代表直接就使用这个版本,特别指定,不使用自动升级到其它版本
以上都是经验,希望大家可以共同学习