如何提升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 相关文章推荐
JavaScript访问样式表代码
Oct 15 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
js插件YprogressBar实现漂亮的进度条效果
Apr 20 Javascript
JavaScript实现图片DIV竖向滑动的方法
Apr 25 Javascript
让JavaScript中setTimeout支持链式操作的方法
Jun 19 Javascript
JavaScript多线程详解
Aug 12 Javascript
javascript实现动态统计图开发实例
Nov 21 Javascript
第一章之初识Bootstrap
Apr 25 Javascript
基于javascript实现按圆形排列DIV元素(二)
Dec 02 Javascript
微信小程序 自定义对话框实例详解
Jan 20 Javascript
node内置调试方法总结
Feb 22 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
Apr 25 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
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
php在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
javascript 学习笔记(onchange等)
2010/11/14 Javascript
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
留学生如何写好自荐信
2013/12/27 职场文书
法学个人求职信范文
2014/01/27 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
节能宣传周活动总结
2014/05/08 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
检讨书大全
2015/01/27 职场文书
校长一岗双责责任书
2015/05/09 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android