前言
有个feature分支的代码,需要手动合并到主线上,该项目由Vue2
、Cesium
、XbsjEarth
构成的三维系统,在运行项目时,却报了如下图的错误:
定位问题
首先,我猜想是不是XbsjEarth
的初始化有问题,跑去看其源码,和github
的issues,却没有找到问题原因
其次,我根据报错问题,去google
搜索,仍然没有定位出问题
最后,是最最无奈的一种办法,那便是排除法,将该项目引用到的所有功能组件一一屏蔽查找,终于发现有问题的Vue
文件,该文件的问题代码如下所示:
竟然将cesium
对象挂载到vue
的data
中,data
里所有的对象(比如你定义了target: { person: { name: 'zwf'} }
)会默认给target
、person
、name
等添加getter
、setter
方法,这意味着cesium
对象里的所有属性都是响应式,会给系统性能带来极大地损耗。
cesium等一切相关对象,皆不能定义在vue的data里,将this.cesium
去掉,采用window._cesium
全局对象,问题便迎刃而解了
结语
以上便是我遇到问题的解决思路,希望能对大家有所启发