如何提升vue.js中大型数据的性能


Posted in Javascript onJune 21, 2019

你好!欢迎大家访问VueDose的第一篇文章!我们在VueDose中开始冒险吧,你会喜欢这些对你有帮助的小技巧。

VueDose的所有的文章都非常的简洁,我相信人们在这种格式下更容易找到有用的东西。所以,让我们直奔主题。

通常我们需要获取对象数据,比如用户,项目,文章,等等等等·····

有时,我们甚至不需要修改它们,只是为了展示它们或在(a.k.a. Vuex)中存贮它们的全局状态。那么获取这个数据的简单代码如下:

export default {
data: () => ({
users: {}
}),
async created() {
const users = await axios.get("/api/users");
this.users = users;
}
};

Vue会自动循环数组的每个对象,并对每个一级属性进行响应。

对于大型数组对象来说这是一个昂贵的做法。是的,有时候你可以把这些数据分页,但是,其他人就能从前端拿到你整个数据。

谷歌地图标记通常就是这种情况,事实上它们是一个巨大的对象。

所以,在这些情况下,如果能够阻止Vue对这个数据的反应机制,我们可以获得一些性能上的提升。我们可以在添加到组件之前使用 Object.freeze 来处理数据实现这一点:

export default {
data: () => ({
users: {}
}),
async created() {
const users = await axios.get("/api/users");
this.users = Object.freeze(users);
}
};

这个也同样适用于 Vuex:

const mutations = {
setUsers(state, users) {
state.users = Object.freeze(users);
}
};

顺便说一下,如果你想要修改数组,你可以创建一个新数组来实现。列如,在原有上添加数据项,你可以这样做:

state.users = Object.freeze([...state.users, user]);

你想知道性能提升多少?我们会在下一篇文章看到它,所以,请继续关注。

今天就到这里了!希望你会喜欢这第一篇文章

理解

这篇文章说的内容主要是如果你确定数据是纯展示用的,如果你一次请求的数据特别大的话,那么可以用 Object.freeze 来冻结你的数据,冻结了数据之后会阻止Vue的默认响应机制,会提高Vue的性能。

Object.freeze()的定义:

Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。

结尾

水平有限,难免有错漏之处,望各位大大轻喷的同时能够指出,跪谢!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
优化innerHTML操作(提高代码执行效率)
Aug 20 Javascript
js jquery验证银行卡号信息正则学习
Jan 21 Javascript
JavaScript定时器详解及实例
Aug 01 Javascript
javascript批量修改文件编码格式的方法
Jan 27 Javascript
js判断文本框剩余可输入字数的方法
Feb 04 Javascript
详解JavaScript函数
Dec 01 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
AngularJS 指令详细介绍
Jul 27 Javascript
ES6学习教程之Map的常用方法总结
Aug 03 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
Jul 09 Javascript
浅谈微信页面入口文件被缓存解决方案
Sep 29 Javascript
vue自动路由-单页面项目(非build时构建)
Apr 30 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
Jun 21 #Javascript
微信小程序实现点击效果
Jun 21 #Javascript
JS利用prototype给类添加方法操作详解
Jun 21 #Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
Jun 21 #Javascript
微信小程序实现弹出菜单动画
Jun 21 #Javascript
js类的继承定义与用法分析
Jun 21 #Javascript
js中值引用和地址引用实例分析
Jun 21 #Javascript
You might like
用PHP产生动态的影像图
2006/10/09 PHP
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
JS温故而知新之变量提升和时间死区
2019/01/27 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
python MySQLdb使用教程详解
2018/03/20 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
pygame实现打字游戏
2021/02/19 Python
浅析python内置模块collections
2019/11/15 Python
Python模块 _winreg操作注册表
2020/02/05 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
Python函数调用追踪实现代码
2020/11/27 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
物理教育专业求职信
2014/06/25 职场文书
七一建党节慰问信
2015/02/14 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
教师节座谈会主持词
2015/07/03 职场文书
保护动物的宣传语
2015/07/13 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
2016春季运动会前导词
2015/11/25 职场文书
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL