Vuex 4 正式发布

来都来了 2021-02-09 10:05:23 ⋅ 783 阅读

Vuex 4 已正式发布,此版本的更新重点是提供更好的兼容性。从 release note 可以看到,Vuex 4 不但支持 Vue 3,并且提供与 Vuex 3 完全相同的 API,因此用户可以在 Vue 3 中重用其现有的 Vuex 代码。

虽然 Vuex 4 将兼容性放在了首位,但此版本依旧包括部分破坏性变化,下边简单介绍一下。

安装过程已更改

为了与新的 Vue 3 初始化过程保持一致,Vuex 的安装过程已更改。举个例子,如果需要创建一个新的 store 实例,现在会鼓励用户使用新引入的createStore功能。

import { createStore } from 'vuex'

export const store = createStore({
  state() {
    return {
      count: 1
    }
  }
})

尽管从技术上来讲这并不是一个破坏性变化,开发者仍可以使用new Store(...)语法,但官方表示建议将该方法与 Vue 3 和 Vue Router 4 保持一致。

要将 Vuex 安装到一个 Vue 实例,需要传递实例而非 Vuex。

import { createApp } from 'vue'
import { store } from './store'
import App from './App.vue'

const app = createApp(App)

app.use(store)

app.mount('#app')

打包与 Vue 3 一致

新版本会生成以下的包,以与 Vue 3 打包保持一致:

  • vuex.global(.prod).js
  • vuex.esm-browser(.prod).js
  • vuex.esm-bundler.js
  • vuex.cjs.js

ComponentCustomProperties类型化

Vuex 4 删除其this.$store在 Vue Component 中的全局类型以解决 issue #994。与 TypeScript 一起使用时,必须声明自己的模块扩充 (module augmentation)。

将以下代码放在项目中以允许this.$store正确类型化:

// vuex-shim.d.ts

import { ComponentCustomProperties } from 'vue'
import { Store } from 'vuex'

declare module '@vue/runtime-core' {
  // Declare your own store states.
  interface State {
    count: number
  }

  interface ComponentCustomProperties {
    $store: Store<State>
  }
}

从核心模块导出createLogger 函数

在 Vuex 3 中,createLogger函数从vuex/dist/logger中导出,但现在它已包含在核心软件包中。因此应该直接从vuex包中导入。

import { createLogger } from 'vuex'

此外还包括两个 Bugfix:

  • 修复导出缺少storeKey的错误(4ab2947)
  • 修复 webpack 包中的 tree shaking 无法运行的错误 (#1906) (#1907) (aeddf7a)

下载地址:https://github.com/vuejs/vuex/releases/tag/v4.0.0


全部评论: 0

    我有话说:

    Vue 3 正式发布

    Vue.js 3.0 "One Piece" 已正式发布,此框架新的主要版本提供了更好的性能、更小的捆绑包体积、更好的 TypeScript 集成、用于处理大规模用例的新 API,并为框架未来的长期

    Vant 3.0 正式发布:全面拥抱 Vue 3

    历经八个月时长的开发,Vant 3.0 现已正式发布。官方表示,在本次迭代中,其主要工作是基于 Vue 3 重构整个代码仓库和周边生态,并发布 Vant 3.0、Vant Cli 3.0

    Swagger接口文档工具:Knife4j 2.0.7 发布,细节优化

    Knife4j前身是swagger-bootstrap-ui,是一个为Swagger接口文档赋能的工具 文档:https://doc.xiaominfo.com 效果(旧版):http

    Vue CLI 3.0 正式发布Vue.js 开发标准化工具

    Vue CLI 3.0 已发布,该版本经历了重构了很多有用的内容

    Krita 4.4.1 正式发布,开源数字绘画软件

    Krita 4.4.1 正式发布,它是一款自由开源的数字绘画软件,主要针对手绘用途设计,具备高度可定制的笔刷系统和完善的图层功能,可通过透明度和变形蒙版来实现非破坏性编辑。它能够绘制位图图像、矢量

    Angular 11.1.0 正式发布,支持 TypeScript 4.1

    。 近日,Angular 11.1.0 正式发布...

    HHVM 4.93 发布,Facebook 开发的开源虚拟机

    HHVM 4.93 正式发布,这个版本的发布就意味着 4.84 版本不再继续支持与维护;HHVM 4.86–4.92,以及 4.56 和 4.80 LTS 还会继续获得支持。 HHVM(HipHop

    【老兵不朽】时隔1年,jQuery 发布 3.4.0 新版

    jQuery 团队的核心开发者 Timmy Willison 在官网正式宣布 jQuery 3.4.0发布

    Linux 5.11-rc4 正式推出,现已支持 RTX 30 系显卡

    Linux 5.11-rc4 正式推出,如今这个时间节点距离 Linux 5.11 稳定版的发布也已经越来越近,因此到了目前这个开发阶段,更新内容并不会有特别显著的变化。 不过,在这个版本中也有非常

    Bootstrap 4.6.0 发布,前端开发框架

    Bootstrap 4.6.0 发布了。 v4.6.0 最大的变化是官方对开发环境进行了大的调整以匹配即将正式发布的 v5 版本。官方表示,目前 v4.x 版本的文档改为基于 Hugo

    前端框架 Angular 11.0.0 正式发布,不再支持 IE 9 、10

    前端框架 Angular 11.0.0 正式发布。 Angular 11.0.0 将 TypeScript 升级到 4.0, 对 TypeScript 3.9 不再支持。 放弃了对 IE 9 、10

    Linux Kernel 5.10.10 正式发布

    Linux 5.10.10 版本正式发布,本次更新包含有 43 个补丁,更新内容主要以修复 bug,提升稳定性为主。 此次更新内容包含: 为 Cadence SPI 控制器添加驱动程序 修复了当

    TypeScript 4.2 发布

    TypeScript 4.2 已经发布。TypeScript是一种开源语言,它通过添加静态类型定义在 JavaScript(全球最常用的工具之一)的基础上构建。 主要更新内容 更智能的类型别名保护

    Firefox 85.0 正式发布,加强用户隐私保护

    Firefox 85.0 正式发布了, 该版本主要加强了对用户的隐私保护,防止其浏览网页时被追踪。 新功能 Firefox 现在可以保护用户免受 supercookies 的侵害

    Micronaut 2.4.0 发布,基于 JVM 的微服务应用框架

    ,Micronaut 2.4.0 正式发布,本次更...

    Micronaut 2.4.2 发布,基于 JVM 的微服务应用框架

    ,Micronaut 2.4.2 正式发布,本次更...

    OpenSSH 8.4 发布

    OpenSSH 8.4发布,OpenSSH 是 100% 完整的 SSH 协议 2.0 版本的实现,并且包括 sftp 客户端和服务器支持,它用于远程登录的主要连接工具。OpenSSH 对所有

    Pulsar Go Client 0.4.0 发布

    Pulsar Client Go 是 Apache Pulsar 的 Go 语言客户端。近期,社区发布 Pulsar Client Go 0.4.0 版本。 新特性 支持在

    GoAccess 1.4.4 发布,日志分析工具

    GoAccess 1.4.4 发布了。GoAccess 是一个基于终端的快速日志分析器。其核心思想是实时快速分析和查看 Web 服务器统计信息,而无需使用浏览器,适合希望通过 SSH 快速分析访问日