如何提升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/jquery获取地址栏url参数的方法
Mar 05 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
Apr 04 Javascript
JS的location.href跳出框架打开新页面的方法
Sep 04 Javascript
深入学习jQuery Validate表单验证
Jan 18 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
Apr 12 Javascript
详解Bootstrap插件
Apr 25 Javascript
jQuery Ajax 全局调用封装实例代码详解
Jun 02 Javascript
JavaScript之RegExp_动力节点Java学院整理
Jun 29 Javascript
Angular2的管道Pipe的使用方法
Nov 07 Javascript
解决layer 动态加载select 失效的问题
Sep 18 Javascript
JavaScript异步操作的几种常见处理方法实例总结
May 11 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
Sep 02 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中的一个中文字符串截取函数
2007/02/14 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
linux中cd命令使用详解
2015/01/08 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python编程实现正则删除命令功能
2017/08/30 Python
python机器学习之神经网络(一)
2017/12/20 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
python获取地震信息 微信实时推送
2019/06/18 Python
Python pandas库中的isnull()详解
2019/12/26 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
Python创建文件夹与文件的快捷方法
2020/12/08 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
工作表现自我评价
2014/02/08 职场文书
论语读书笔记
2015/06/26 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书