50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

Vuex3.1.1 更新:支持 jsDelivr,修复内存泄漏

  • 2019-05-23
  • 本文字数:1759 字

    阅读完需:约 6 分钟

Vuex3.1.1更新:支持jsDelivr,修复内存泄漏

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

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

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


<script src="https://some-cdn.com/vue.js"></script><script>new Vue();</script>
复制代码


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


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


<script type=”module” src=”vue.esm.js”></script>
复制代码


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


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


<script type=”module” src=”vuex.esm.browser.js”></script>// Or below for the min version<script type=”module” src=”vuex.esm.browser.min.js”></script>
复制代码


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


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

支持 jsDelivr

jsDelivr比大多数CDN都快得多。现在,你还可以从 jsDelivr 导入Vuex

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

模块可以把我们的商店分成更小和更可控的部分,因为整个状态包含在 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



2019-05-23 18:166055

评论

发布
暂无评论
发现更多内容

整合开源治理经验,共谋开源社区发展|2023开放原子全球开源峰会开源社区治理与运营分论坛即将启幕

开放原子开源基金会

开源 开放原子全球开源峰会 开源社区治理与运营

设计与实现阶段的可靠性工作

阿泽🧸

6 月 优质更文活动

Vue-事件基本使用

不觉心动

6 月 优质更文活动

轻量级分布式日志追踪-Tlog快速入门

javalover123

分布式 日志 Skywalking spring-boot Tlog

如何用Smartproxy住宅代理IP抢购潮牌鞋子?住宅代理抢购限量款式

摘星星的猫

【Netty】「NIO」(一)认识 ByteBuffer

sidiot

后端 Netty java‘ 6 月 优质更文活动

动态修改coreThread线程池拓展

FunTester

美国同事的那些离职类型

HoneyMoose

什么是CAS和ABA问题?如何解决?

javacn.site

华为云发布面向消费终端的企业云原生白皮书,开辟移动时代的云原生路径

脑极体

云原生

自动驾驶≠速度与激情

白洞计划

自动驾驶

推动开源与商业共生共赢 | 2023开放原子全球开源峰会开源商业化创新发展分论坛即将启幕

开放原子开源基金会

开源 开源商业化 开放原子全球开源峰会 开放原子

AWS CodeWhisperer 上手初体验安装与使用

宇宙之一粟

Python 代码编辑工具 CodeWhisperer 6 月 优质更文活动

设计模式总结(二):结构型模式

Studying_swz

6 月 优质更文活动

初步了解RNN, Seq2Seq, Attention注意力机制

Studying_swz

6 月 优质更文活动

聊聊那些奇葩的代码规范 —— 所有 IntelliJ 的警告必须要处理

HoneyMoose

奇点云举办“数据进化论”数智科技大会,发布数据云七大场景

奇点云

业务场景 奇点云 数智科技大会

以AI为灯,照亮医疗放射防护监管盲区

飞桨PaddlePaddle

人工智能 深度学习 百度飞桨

java多线程总结

Studying_swz

6 月 优质更文活动

从 PMO 的视角,看如何从 0 到 1 搭建研发效能体系?

思码逸研发效能

研发效能

2个原因解答:为什么网络安全缺口大,招聘却很少?

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

Docker里的基础术语

穿过生命散发芬芳

Docker 6 月 优质更文活动

OpenYurt 即将亮相 EdgeX+OpenVINO 开发者生态大会

阿里巴巴云原生

阿里云 开源 云原生

系统稳定性与高可用保障

得物技术

架构 高可用 稳定性

推动体系建设 助推融合发展|2023开放原子全球开源峰会软件物料清单(SBOM)分论坛即将启幕

开放原子开源基金会

开源 开放原子全球开源峰会 软件物料清单(SBOM)

C语言编程语法—文件读写

芯动大师

C语言 二进制 6 月 优质更文活动

以安全为底线 共迎机遇和挑战|2023开放原子全球开源峰会可信基础设施技术分论坛即将启幕

开放原子开源基金会

开源 开放原子全球开源峰会 可信基础设施技术

自动驾驶≠速度与激情

脑极体

自动驾驶

2023-06-06:给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位于 (row, col) 的每个结点而言, 其左右子结点分别位于 (row + 1, col -

福大大架构师每日一题

golang rust 福大大

地图实火!断货加印,限时折扣抢购通道开启

融云 RongCloud

社交 融云 泛娱乐 出海 wicc

Vuex3.1.1更新:支持jsDelivr,修复内存泄漏_语言 & 开发_Diogo Souza_InfoQ精选文章