vue性能
刚开始接触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性能的更多相关文章
- Vue 性能优化track-by
Vue 是一个MVVM框架 所谓mvvm就是model-->view,view-->model. vue帮助我们实现了自动绑定.省点我们用JQUERY,zpeto 去操作dom的麻烦. 主 ...
- 浅谈vue性能优化
基础优化 所谓的基础优化是任何 web 项目都要做的,并且是问题的根源.HTML,CSS,JS 是第一步要优化的点 分别对应到 .vue 文件内的,<template>,<style ...
- Vue性能优化
今天来谈一谈Vue中一些性能优化的问题,仅仅是个人使用中的一些小心得,来,今天我一句废话不多说,直接上内容好吧 1.v-if和v-show的使用, 我们都知道这两个都可以控制显隐,那我们用哪个呢,个人 ...
- VUE性能优化总结
1.v-show,v-if 用哪个? 在我来看要分两个维度去思考问题: 第一个维度是权限问题,只要涉及到权限相关的展示无疑要用 v-if, 第二个维度在没有权限限制下根据用户点击的频次选择,频繁切换的 ...
- vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制
一.定义[nextTick.事件循环] nextTick的由来: 由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图 ...
- Vue性能优化之组件按需加载(以及一些常见的性能优化方法)
关于Vue中的按需加载我就简单介绍一下:大概就是我们所有的东西都会在app.js里面,但是我们并不需要把所有的组件都一次性加载进来,我们可以在需要它的时候再将它加载进来,话不多说,开车! 1.webp ...
- 对vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制
一.定义[nextTick.事件循环] nextTick的由来: 由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图 ...
- 前端vue性能优化
一:代码层次优化 1.1.v-if 和 v-show 区分使用场景 v-if 是 真正 的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建:也是惰性的:如果在初始渲染时 ...
- vue性能优化2--引入cdn
当我们加载页面时,需要将我们所需要的一些依赖加载到当前会话中然后再开始执行,如果我们首屏,模块比较多是,需要等待的时间会比较长,而且.浏览器内存最多执行四十个进程,需要等到加载完前面的才能执行后面的代 ...
随机推荐
- 2018年NGINX最新版高级视频教程
2018年NGINX最新版高级视频教程,想要的联系我,QQ:1844912514
- 2019-04-16 SpringMVC 学习笔记
1. 配置过程: ① 配置servlet(org.springframework.web.servlet.DiapatcherServlet)拦截请求 ② SpringMVC的默认配置文件:servl ...
- ZYNQ原理图中添加RTL设计模块
前言 已有的RTL模块怎么添加到原理图中? 流程 (1)添加文件到设计中. (2)右键文件添加到block design中. (3)连线即可. 以上.
- LuoguP4233 射命丸文的笔记
题目描述 求所有\(n\)个点带标号强连通竞赛图中哈密顿回路数量的平均值. 题解 因为要求平均数,所以我们可以把分母和分子单开来算. \(n\)个点的所有竞赛图的所有哈密顿回路个数是可以求出来的,就是 ...
- Linux-yum只下载不安装
通过yum命令只下载rpm包不安装 经常遇到服务器没有网络的情况下部署环境,或者创建自己的 yum 仓库等.每次都是在网上搜搜搜,都是五花八门,自己整理了下自己用到的以下三种方式,这里没有太多废话,只 ...
- postgresSQL 实现数据修改后,自动更新updated_date/ts等字段
1. 需求说明: 实现MYSQL中有on update CURRENT_TIMESTAMP 2. 需求分析 由于数据库迁移需要将MYSQL中的数据迁移到postgresSQL中,由于MYSQL中有on ...
- BUG in Ubuntu--Could not get lock /var/lib/dpkg/lock
在ubuntu中通过apt安装软件时,报错: E: Could not : Resource temporarily unavailable) E: Unable to lock the admini ...
- 背包问题(01背包,完全背包,多重背包(朴素算法&&二进制优化))
写在前面:我是一只蒟蒻~~~ 今天我们要讲讲动态规划中~~最最最最最~~~~简单~~的背包问题 1. 首先,我们先介绍一下 01背包 大家先看一下这道01背包的问题 题目 有m件物品和一个容量为 ...
- 关于使用jwt编写接口时候对token判断时候错误的机制处理
前言:php在使用接口时候很多时候都是需要带token的,如果不对token进行校验那么别人就能够随意编写一个token进入你的接口拿数据,应该怎样处理呢? //生成token public func ...
- django-个人博客登录及权限验证功能的实现
完成注册后随即开始进行登录,登录后页面显示登录者的名称 实现如下: 前端页面html,对session进行判断,有值则显示登录者的名字 ,无值则显示注册字样: 后台views函数 首先对验证码进行验 ...