刚开始接触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架构,采用这种方式去写,性能上我觉得会有很大的提升,因为我真正尝试...,

vue性能的更多相关文章

  1. Vue 性能优化track-by

    Vue 是一个MVVM框架 所谓mvvm就是model-->view,view-->model. vue帮助我们实现了自动绑定.省点我们用JQUERY,zpeto 去操作dom的麻烦. 主 ...

  2. 浅谈vue性能优化

    基础优化 所谓的基础优化是任何 web 项目都要做的,并且是问题的根源.HTML,CSS,JS 是第一步要优化的点 分别对应到 .vue 文件内的,<template>,<style ...

  3. Vue性能优化

    今天来谈一谈Vue中一些性能优化的问题,仅仅是个人使用中的一些小心得,来,今天我一句废话不多说,直接上内容好吧 1.v-if和v-show的使用, 我们都知道这两个都可以控制显隐,那我们用哪个呢,个人 ...

  4. VUE性能优化总结

    1.v-show,v-if 用哪个? 在我来看要分两个维度去思考问题: 第一个维度是权限问题,只要涉及到权限相关的展示无疑要用 v-if, 第二个维度在没有权限限制下根据用户点击的频次选择,频繁切换的 ...

  5. vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制

    一.定义[nextTick.事件循环] nextTick的由来: 由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图 ...

  6. Vue性能优化之组件按需加载(以及一些常见的性能优化方法)

    关于Vue中的按需加载我就简单介绍一下:大概就是我们所有的东西都会在app.js里面,但是我们并不需要把所有的组件都一次性加载进来,我们可以在需要它的时候再将它加载进来,话不多说,开车! 1.webp ...

  7. 对vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制

    一.定义[nextTick.事件循环] nextTick的由来: 由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图 ...

  8. 前端vue性能优化

    一:代码层次优化 1.1.v-if 和 v-show 区分使用场景 v-if 是 真正 的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建:也是惰性的:如果在初始渲染时 ...

  9. vue性能优化2--引入cdn

    当我们加载页面时,需要将我们所需要的一些依赖加载到当前会话中然后再开始执行,如果我们首屏,模块比较多是,需要等待的时间会比较长,而且.浏览器内存最多执行四十个进程,需要等到加载完前面的才能执行后面的代 ...

随机推荐

  1. 结构体中.和->两种访问区别

    定义结构体指针,访问成员时就用->定义结构体变量,访问成员时就用. 例如:struct A { int a; char b;}; struct A q; 访问成员就用:q.a;struct A ...

  2. [ffmpeg] h.264解码所用的主要缓冲区介绍

    在进行h264解码过程中,有两个最重要的结构体,分别为H264Picture.H264SliceContext. H264Picture H264Picture用于维护一帧图像以及与该图像相关的语法元 ...

  3. 【LUOGU???】WD与数列 sam 启发式合并

    题目大意 给你一个字符串,求有多少对不相交且相同的子串. 位置不同算多对. \(n\leq 300000\) 题解 先把后缀树建出来. DFS 整棵树,维护当前子树的 right 集合. 合并两个集合 ...

  4. P1140 相似基因 (dp)

    题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了44种核苷酸,简记作A,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类基因工作组的任务 ...

  5. 简单记录一次getshell到进服务器的过程

    通过st2命令执行上次木马进行getshell 查看whoami,发现权限是administrator,直接net user xxx xxx123.. /add,发现拒绝访问 通过命令tasklist ...

  6. LeetCode--11_974_Subarray_Sums_Divisible_by_K

    题目链接:点击这里 public static int subarraysDivByK(int[] A, int K) { int ans = 0,sum = 0; int[] B = new int ...

  7. noi.ac309 Mas的童年

    题目链接 题面 题目描述 \(Mas\)完成了一天的工作,走在回家的路上,看着路边的景色,他想起来自己的童年. 许许多多的记忆交错,丝丝缕缕的牵扯着\(Mas\). 在回忆的深处,\(Mas\)想起来 ...

  8. Linux路径与Win路径的转换

    cygpath $ cygpath -p "$WinPath" -u LinuxPath $ cygpath -p "$LinuxPath" -w WinPat ...

  9. Dynamics CRM 日常使用JS整理(三)

    一.指定 Partylist 类型字段能 lookup 的实体(以 Appointment 中某个字段为例子): var control = Xrm.Page.getControl("req ...

  10. DotNet进阶系列

    一. 回顾历史 回顾个人发展历程,自2012年初次接触开发至今(2018年)已经有六个年头,这期间陆陆续续学习并掌握了不少技术,C#语言.ORM框架.多线程技术.设计模式.前端技术.MVC.MVVM框 ...