刚开始接触vue觉得vue真是好,用起来好方便呀,与以往的用jquery类库写逻辑,简直方便的要死。网上也都是对vue的好评,但是呢我现在的感觉就是vue真坑,真垃圾。
先说的我们项目遇到到问题。我们在开发一个语音聊天的软件,利用c++做的外壳,内部逻辑用前端代码完成。刚开始做技术选型的时候大家都很高兴用vue。项目完成后用户量增多导致特别的卡,input输入框打字的时候就会卡顿。而且软件的cpu占用达到了恐怖的30%,我们做的只是一个非常轻量级的语音软件。并没有多复杂的交互。cpu占用居然比我打开ps都高。后来经过一段时间的排查找到原因了,罪魁祸首就是vue框架。
vue之所以会这么的烧cpu主要是它的数据模型。我们的网站也是用vue开发的但是没用脚手架。每个页面的data对象中参数不多,最多就几十个,整个数据量很小。而且浏览器的性能优化做的好,不存在卡顿现象。但是在语音软件中,一个房间列表的数据模型就上百个,一个房间中人数对应的数据模型,在人多的时候也达到了上百个。这只是一部分,还有聊天信息的数据模型,两百多条。一个data对象内部的所有key值加起来上万个。只要有一个改变,这拥有上万个key值的data对象就会从上至下从外到内遍历一遍,虽然它只有在某个值改变的时候才去操作对应的dom。但是数据模型的一遍又一遍刷新,检查,这已经是在严重的消耗性能了。而且我上面有个一秒中定时器,虽然只改变一个参数,但是我检测到整个数据模型在不停的刷,计算属性的方法和一些绑定属性的方法都在不停的调用。当然这个问题现在发现已经是没法解决了。网上看了很多vue优化方案都是治标不治本。
后来没办法就把数据模型中的大的数组去掉,用自己写的原生方法处理,用的也是类似mvvm的思路。只是改变单个属性不会在导致所有属性的遍历。css的也做了一些优化,cpu下降了10%。也还好现在的用户量可以满足。
我个人觉得vue做些简单的项目是很好的,很大程度上节省了代码量。但要做一个大型的项目,觉得并不合适。可以用vue的思路,自己在底层搭建mvvm架构,采用这种方式去写,性能上我觉得会有很大的提升,因为我真正尝试...,
相关文章
- 08-14Vue实战--学习笔记310(计算属性)
- 08-14vue动态组件
- 08-14Android性能的静态变量或属性
- 08-14vue组件name的作用小结
- 08-14vue keep-alive解决关闭标签动态缓存问题
- 08-14vue的keep-alive组件
- 08-14vue路由在keep-alive下的刷新问题 对watch的影响
- 08-14vue 动态组件(多个组件) 以及keep-alive
- 08-14[vue-element-admin]-更改主题颜色
- 08-14vue组件name的作用小结