BUG出现
本来项目中一个后台管理的功能,一直正常运转,突然有天发现弹框弹不出来了,并且点击弹框按钮会导致整个页面崩溃卡死,em…
定位问题
其实这个问题除了上面说的弹框和卡死问题,还有一个问题,表格样式突然不生效了,而我们整个页面的UI框架用的就是element ui,所以我确定是element ui发生的问题。
OK!既然确定是UI框架的问题,我第一时间觉得可能是弹框组件写的有问题,但无论是检查自己写的代码,还是去element ui官网查文档,都可以确认的是自己写的代码是没问题的。这tm就怪了!
不过!结合刚才说的表格样式不生效的问题,我突然觉得,是不是有可能element ui样式库的原因?因为我们是通过CDN线上引入的库,所以我初步认定是样式库的原因。因此,我们将项目中的表格属性变成自己定义,如下:
<style>
.el-table tr{
height: 50px;
}
</style>
这样,暂时解决了,弹框不能弹出的问题。不过样式的问题还没解决,表格样式一样是失效的…
这时候,我再去查看官方文档,突然被文档开头引入组件的一句话吸引了:
关键语句:升级时受到非兼容性影响
我认为这句话可能就是我们出现这个BUG的原因~
OK,我们按照官方文档引入线上组件,然后固定到2.15.6版本(问题发生于2021.9.6,此时element版本为2.15.6),进而完美解决了问题。
<!-- elementUi引入 -->
<%--<script type="text/javascript" src="../resources/js/elementUi.js"></script>--%>
<%-- 锁定2.15.6版本,防止element升级后可能受到的兼容性影响 --%>
<script src="https://unpkg.com/element-ui@2.15.6/lib/index.js"></script>
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
当然了,没有固定版本,解决这个问题的重要原因是我们项目中本来是将js组件库下载下来的,这里我们换成引入线上的库了。至于后面的固定版本,说实话我不确定是否写对了,这里暂且不表吧。
思考总结
从目前来看,出现BUG的原因是本地组件库与element升级版本发生了兼容性的冲突,导致组件库部分失效。从这个问题想以后,如何避免此类问题重复发生?无疑,是仔细研读官方文档,官方文档一般会清晰的告诉你可能会出现一些升级版本的问题,如果在引入代码之前就按照文档的要求,引入线上组件库并固定版本,就可以避免此类问题。
PS:以上解决办法和分析是我个人想法,如果有不对的地方,欢迎指正~