作者 | Diogo Souza 译者 | 王强

JavaScript 已成为庞大、多样化并快速发展的编程语言。每当 JS 的框架或库发布更新,社区中与之相关的项目也会随之作出改进——Vue.js 及其附属项目就是典型例子。

Vuex 是简单直观的状态管理服务,但它的更新步伐是跟随 Vue.js 的,所以有时新版 Vue.js 的功能会迟一些才能获得 Vuex 的支持。

例如,原生移动应用已经广泛流行。许多 JavaScript 项目都有对应的库和框架等组件来开发应用。

和 Vue 类似,NativeScript-Vue 也是一个 NativeScript 插件,让开发者可以使用 Vue 来制作移动应用。Vuex 还可以与 NativeScript-Vue 集成,以便与组件的状态机一起使用,但它缺乏良好的调试机制。

Vuex 的 3.1.1 版本已经开始处理这个问题了。除了支持在 NativeScript 应用中调试Vuex 之外,这一版更新还有很多改进,例如纳入 jsDelivr CDN npm 包,并修复了模块注册的内存泄漏错误等。这个版本没有重大改动,所以升级项目时无需担心。

你可以查看更新日志 和官宣资料、贡献者提交内容来了解更多信息。下面我们具体看一下。

支持在 NativeScript 应用中调试 Vuex

Vue-remote-devtools 是使用 Vue.js 开发 NativeScript 应用的官方 Vue 开发工具应用。它基于 Node.js 和 Chromium,让开发者可以轻松调试 HTML/CSS/JS 应用(这里的例子则是 Vue):

此外,vue-devtools 是一个用于调试基于 Web 的 Vue 应用的浏览器扩展,可以与 Vuex 及其状态管理库无缝集成,让开发者可以可视化之前的状态并在它们之间来回切换。这对所谓时间旅行调试的流程非常有用(例如,你可以在各个状态间进退自如)。

但对于 NativeScript 项目来说,这一版本之前是没有这个功能的。现在开发者可以在非浏览器环境下检查 Vuex 状态。如果你不太了解 Vuex 状态管理,可以参阅此处链接了解更多信息: https://vuex.vuejs.org/guide/state.html

相关链接:

vue-devtools: https://github.com/vuejs/vue-devtools

Vuex 状态 : https://github.com/vuejs/vuex/pull/1404

为浏览器提供的新的缩小器和 ES 模块

在 ES 模块出现之前,开发者通常会将 JavaScript 代码像下面这样导入 HTML 页面:



这种导入 JS 库的经典方法有一些缺陷:每次导入的顺序必须是正确的;如果顺序不正确,下面的脚本就会找不到依赖项。这种方法还将对象和函数暴露给了全局命名空间,因此任何人都可以访问并更改它们。此外你还可能犯导入文件两次的错误——缺陷还不止这些。

Vue 就遇到了这个问题。在 2.6 版之前,它在构建过程中没有专门在浏览器中加载 Vue 模块的步骤。所以下面这样的代码是不行的:

结果从 2.6 版开始,因为现在所有人都会在浏览器中使用 ES 模块,Vue 在构建流程中加入了这一步。

此外 Vuex 也面临相同的问题,但到了 3.1.1 版本才得到解决。现在要将 Vuex 直接导入浏览器,只需使用:

// Or below for the min version

此外该版本还加入了名为 Terser 的新的缩小器。这是因为之前的缩小器 UglifyJS 不再维护了,而且后者只支持 ECMAScript 5,而 Terser 支持 ES6+。

对于开发者来说这没什么区别。另外,因为 Terser 是 UglifyJS 的一个分支,所以它保持了对 uglify-es 和 uglify-js@3 的 API 和 CLI 兼容性的支持。

相关链接:

Terser: https://github.com/terser-js/terser

支持 jsDelivr

jsDelivr 比大多数 CDN 都快得多(详细对比见下方链接)。现在,你还可以从 jsDelivr 导入 Vuex 3.1.1。

相关链接:

CDN 性能分析和对比: https://www.cdnperf.com/

修复注册/ 注销模块时内存泄漏问题

模块可以把我们的商店分成更小和更可控的部分,因为整个状态包含在 Vuex 中的一个大对象里。要在商店中添加或删除模块,我们只需要分别调用 store.registerModule 或 store.unregisterModule 即可。

但在大型应用中管理浏览器内存可能有点棘手。 这有一个已知问题,需要一个应用程序添加数百个模块并在之后立即取消注册,这导致堆内存未被清除。 你可以想象下一步会发生什么...... 内存泄漏。

这一版的修复会简单地在函数 resetStoreVM 中对 oldVm 实例做垃圾回收,该函数负责在高峰期活动之后恢复 vm。

小结

完整更新列表可参阅此处(其中还有之前版本的更新介绍): https://github.com/vuejs/vuex/releases

如果你希望了解有关 Vuex 的更多信息,请参阅其官方入门指南: https://vuex.vuejs.org/guide/

英文原文: https://blog.logrocket.com/whats-new-in-vuex-3-1-1-d796b0c791bf

课程推荐

前端领域的技术演进一直要比其他技术快一些,这给前端工程师带来持续的挑战。这里整理了从 Vue 到 React、iOS 到 Andoid、再到前端架构体系的干货课程,带你解读从前端小工到专家的实战心法,高效解决 80% 的开发难题。

gifcam使用缩小内存_Vuex3.1.1更新:支持jsDelivr,修复内存泄漏相关推荐

  1. 确定你的台式计算机支持的内存类型,怎么看主板支持多大内存 教你看主板支持多大内存2种方法...

    怎么看主板支持多大内存?由于不同的主板最大支持的内存大小不同,一些老主板最大支持4G/8GB内存,一些新主板可以支持16GB或者更高.对于DIY装机或者打算为电脑升级内存的时,就需要先了解主板最大支持 ...

  2. i7 3960x支持服务器内存吗,酷睿i7 3960X支持多大内存

    酷睿i7 3960X最大支持64GB内存. Intel酷睿 i7 3960X全称Intel Core i7 3960X Extreme Edition(至尊版),是Intel基于Sandy Bridg ...

  3. 计算机32位操作系统最大识别到内存,win7 32位系统支持多大内存

    很多小伙伴都不知道自己的电脑安装多大的内存最好,其实这个跟我们的系统位数有关系的,一般4G内存的我们安装64位的系统,那么32位的系统最大支持多大内存呢?下面小编来说说win7 32位系统支持多大内存 ...

  4. 计算机支持最大内存大小,怎么查看电脑支持的最大内存?

    首先明确的一点是电脑所支持的最大内存容量是由主板北桥芯片所决定的,主板的制作工艺直接决定了其支持容量的大小,换句话来说在电脑出厂后所支持拓展的内存容量就是定型的了.当然了,支持内存的容量大小还跟你所装 ...

  5. 32位计算机分配的最大内存大小,32位系统支持多大内存,教您如何提升32位系统的内存...

    民用的32位的操作系统的内存都是4G,但犹豫要保留一部分供给硬件使用,所以留给用户的可用内存就比较少了,一般来说只有3.2G到3.5G左右,剩下的就都浪费了,那么,该怎么避免这种浪费呢?又应该如何去提 ...

  6. 确定你的台式计算机支持的内存类型,怎么查看电脑主板支持多大内存?教你看主板支持多大内存2种方法...

    在我们使用电脑时,都希望电脑有这极强的性能,在想要电脑有极强的情况下,电脑的硬件其重要性毋庸置疑.很多喜欢DIY的小伙伴都会选择性能强但是极具性价比的硬件组装.不过不少用户在选择内存条的时候都是往大了 ...

  7. 怎么升级计算机内存容量,简单几步 快速确认电脑内存如何升级

    对于喜欢玩游戏的人来说,能在极致特效下畅玩自己喜欢的游戏,是一件再好不过的事情了.但对于不了解硬件的游戏玩家,往往会存在一个误区,认为显卡才是决定游戏流畅度的唯一标准.其实不然,显卡在游戏流畅度方面确 ...

  8. JavaScript内存管理机制以及四种常见的内存泄漏解析

    转自:http://geek.csdn.net/news/detail/238898 原文:How JavaScript works: memory management + how to handl ...

  9. 怎样查看主板支持服务器内存,如何简单方便的查看主板支持多大内存?

    由于不同的主板最大支持的内存大小不同,一些老主板最大支持4G/8GB内存,一些新主板可以支持16GB或者更高.当我们要对自己的电脑进行内存升级时,就需要先了解主板最大支持多大的内存,这样才能去选择购买 ...

最新文章

  1. webuploader 怎么在react中_React 项目性能分析及优化
  2. (详细全面)softmax和log_softmax的联系和区别,NLLLOSS和CrossEntropyLoss的联系和区别
  3. window.onload和jquery中$(function(){ })的区别
  4. 微软面试题 单向链表找环
  5. 前端判断session对象是否为空_谈谈JavaScript这个语言与前端是否需要面向对象?...
  6. 《暗黑地牢》—“克苏鲁”式的绝望冒险
  7. Hibernate基本概念 (3)
  8. “约见”面试官系列之常见面试题之第四十七篇之前端页面的组成(建议收藏)
  9. 轻轻的你来了,悄悄的你走了,邓总没有带走一个bug
  10. 在java中的交换方法有哪些_java中交换两个变量的值有哪几种方法,交换两个变量a和b的值...
  11. jmeter安装包双击没反应_Jmeter5.0源码在eclipse运行的正确打开方式
  12. 光信噪比 (OSNR) 的概念及其重要性
  13. CORS 跨域 实现思路及相关解决方案
  14. 3dmax 导出 fbx文件, 模型 到Unity中 贴图丢失
  15. igbt原理动画演示视频_IGBT的结构与工作原理 测量方法详细讲解
  16. M1 Pro 和 M1 Max MacBook Pro,我们该选择哪款MacBook
  17. 172Echarts - 象形柱图(Dotted bar)
  18. PhotoSweeper X for Mac(重复照片快速清理软件)
  19. 数据库中文字段按拼音排序
  20. Android M 动态权限获取

热门文章

  1. 停电导致IIS问题,解决inetinfo的CPU占用很大
  2. Form组件之详解字段
  3. JAVA中isEmpty、null、的区别
  4. 【easy】101. Symmetric Tree
  5. 2016年事记与感悟
  6. 基于visual Studio2013解决面试题之1305字符串所有子集
  7. java.lang.IllegalStateException: Failed to load ApplicationContext selenium 异常 解决
  8. 王道机试指南读后总结-4(有迷宫问题)
  9. 继续!从顶会论文看对比学习的应用!
  10. 图神经网络中可能用到的11种距离, 小结