背景

平时在用vue开发后台管理系统的时候,应该会用到大量的table这种组件,正常这种组件我们会在项目里做二次封装,然后针对表头title做参数化配置,如下:

export default {

data(){

return {

tableTitle:[

{

label:'省份',

prop:'prop'

},

{

label:'城市',

prop:'prop'

},

{

label:'汇总',

prop:'prop',

colconfig:[

{

label:'下级',

prop:'prop'

}

]

}

...

]

}

}

}

此时如果table字段比较多而且是多表头这种的话,数据结构就比较复杂,如果直接写在data里面的话,会在组件初始化时候,对此对象进行递归重写get set属性,源码如下:

function defineReactive(obj,key,val) {

var dep = new Dep();

var property = Object.getOwnPropertyDescriptor(obj, key);

//如果对象被冻结,则直接跳出,不重写 get set方法

if (property && property.configurable === false) {

return

}

//observe会递归调用defineReactive,去重写对象内层的get set属性

var childOb = !shallow && observe(val);

Object.defineProperty(obj, key, {

enumerable: true,

configurable: true,

get: function reactiveGetter () {

},

set: function reactiveSetter (newVal) {

}

});

}

然而这种静态数据是不需要动态响应的,这样势必会造浪性能浪费,于是我们想办法避免这种不必要的性能浪费。

方案1

此时我们可以用Object.freeze()这个方法对此数据进行冻结,vue组件在对data里的属性拦截时,会判断出被冻结的对象是不可被修改的【如上代码注释】,会直接跳过 get set的操作,这样便可以降低vue组件的render时间,提升页面性能

export default {

data(){

return {

tableTitle:Object.freeze(objConfig)

}

}

}

方案2

把我们不需要动态响应的数据,在created的生命周期里面去定义,这样vue底层就不会拦截到这个属性了

export default {

created(){

this.tableTitle = [xxxxx]

}

}

总结

其实这种场景在开发中经常遇到,比如查询条件有很多selectlist字段,我们也可以把它封装到一个大json里面,然后对其进行避免重写属性,可以降低不少性能开销

到此这篇关于加速vue组件渲染之性能优化的文章就介绍到这了,更多相关vue组件渲染性能优化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

vue渲染大量数据如何优化_加速vue组件渲染之性能优化相关推荐

  1. 宝塔mysql优化_宝塔面板下实现MySQL性能优化处理

    在PHP+MYSQL架构网站运行过程中,往往会遇到各种性能问题影响,如MySQL.PHP.CPU.磁盘IO.缓存等,其中MySQL瓶颈就是最常见也最难解决的一种影响网站性能的因素:通常,我们会使用re ...

  2. get vue 和set 用法_深入剖析Vue源码 - 数据代理,关联子父组件

    简单回顾一下这个系列的前两节,前两节花了大篇幅讲了vue在初始化时进行的选项合并.选项配置是vue实例化的第一步,针对不同类型的选项,vue提供的丰富选项配置策略以保证用户可以使用不同丰富的配置选项. ...

  3. Web-big、html、css、JavaScript、vue、webpack、git、微信小程序、uni-app、性能优化、兼容性、网络请求、web安全、其他

    文章目录 01.HTML基础 1.行内元素有哪些?行内块元素有哪些?块级元素有哪些? 空(void)元素有哪些? 2.页面导入样式时,使用link和@import有什么区别? 3.title与h1的区 ...

  4. pythonweb接口优化_记一次 Python Web 接口优化

    优质文章,第一时间送达! 作者:Lin_R 出处:SegmentFault 背景 我们负责的一个业务平台,有次在发现设置页面的加载特别特别地慢,简直就是令人发指 让用户等待 36s 肯定是不可能的,于 ...

  5. vue设置cookie的domain无效_【Vue.js入门到实战教程】16Tailwind 与 Bootstrap 的区别和使用入门...

    来源 | https://xueyuanjun.com/post/22065我们知道,从 Laravel 8 开始,自带前端脚手架代码默认兼容 Tailwind CSS 框架,取代了之前的 Boots ...

  6. 使用js在桌面上写一个倒计时器_论一个倒计时器的性能优化之路

    原文发表于 2018.05.25,搬运自个人博客. 引子 回顾这半年,扛需求能力越来越强,业务代码也是越写越多.但稍一认真看看这些当时为了满足快速上线所码的东西,问题其实还是不少.这次就从一个简单的计 ...

  7. 微信小程序和vue双向绑定哪里不一样_浅析Vue 和微信小程序的区别、比较

    写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别. 一.生命周期 先贴两张图: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多. vue的钩子函数 ...

  8. webview加载的页面和浏览器渲染的页面不一致_QQ音乐Android客户端Web页面通用性能优化实践...

    QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化.本文将介绍 QQ 音乐 Android 客户端在进行 Web ...

  9. kali2020进入单模式_蚂蚁集团技术专家山丘:性能优化的常见模式及趋势

    陈显铭(山丘) 读完需要 6分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高效 ...

最新文章

  1. 微信小程序之apply和call ( 附示例代码和注释讲解) apply call  bind
  2. 【Win7下Android native code的编译和调试】
  3. 《编写高质量代码:改善c程序代码的125个建议》——建议19:避免使用嵌套的“?:”...
  4. C/C++编译、测试须知、须会,CMake、Boost等
  5. 字符与字符串操作——Windows via C/C++
  6. HDU 4336 Card Collector(状压 + 概率DP 期望)题解
  7. 用户画像标签数据开发之标签权重计算
  8. 可汗学院公开课: 统计学_1 统计学基本知识、二项及泊松分布
  9. vue3中 inject provide的响应式使用
  10. PHPWAMP站点管理的“域名模式”和“端口模式”详解、均支持自定义
  11. python手写汉字识别_用python实现手写数字识别
  12. REVERSE关键字之REVERSE函数
  13. ROS——Teb算法的优化
  14. 2010浙大报录比及分数
  15. 海尔总裁张瑞敏50句管理箴言
  16. VS Code 插件 在线/离线 下载安装VUE
  17. 《OSPF和IS-IS详解》一6.2 IS-IS数据库同步
  18. html网页设计滚动条怎么设置,css怎么设置滚动条?
  19. 电商后台管理系统项目的优化
  20. 全序列卷积神经网络+连接时序分类语音识别

热门文章

  1. DeepFM在贝壳房源详情页推荐场景的实践
  2. 阿里云李飞飞:云数据库成行业事实标准,瑶池正在带领国产数据库换道超车
  3. 浅析平安城市对综合视频监控系统资源管理的技术要求
  4. 利用turtle画一个五角星
  5. 淘客API升级后,方维分享系统不能采集商品的解决方法,用天猫精品库API采集...
  6. 视听语言-2镜头系列
  7. linux生成文件清单,技术|使用 Linux stat 命令创建灵活的文件列表
  8. 英特尔与众多科技业者创CXL反击Nvidia
  9. python开发3d游戏renpy_【图片】从0开始学用Python做游戏的全过程【精品贴】(不定期更新)【python吧】_百度贴吧...
  10. 字节跳动2019春招研发部分编程题汇总(Python版本)