Vuex 4.0 正式发布!新年,官方生态齐聚一堂。

简介: Vuex 4 官方版本正式发布。Vuex 4 的重点是兼容性。Vuex 4 支持 Vue 3,但是仍然提供了与 Vuex 3 完全相同的 API,因此用户可以在 Vue 3 中直接复用他们现有的 Vuex 代码。

Vuex 4 官方版本正式发布。

Vuex 4 的重点是兼容性。Vuex 4 支持 Vue 3,但是仍然提供了与 Vuex 3 完全相同的 API,因此用户可以在 Vue 3 中直接复用他们现有的 Vuex 代码

下文会把破坏性的改动列出来,请注意查看。

源码的 example 文件夹[1]可以看到 Optional 和 Composition API 下的基本用法。

它仍然和 Vue 3 一样在 NPM 包的 next 标签下发布,我们计划在 Vue3 准备好的时候移除 next 标签。

为了 Vuex 4 的稳定发布,大家齐心协力做出了很多贡献。非常感谢你们的帮助。若不是有如此出色的 Vue 社区,根本不可能实现这一切!


文档


请访问 next.vuex.vuejs.org[2] 查看文档。


破坏性变动


安装流程更改


为了和 Vue3 的初始化流程一致,Vuex 的安装流程有所改动。

我们建议用户用新的 函数来建立一个 实例。createStorestore

import { createStore } from "vuex";
export const store = createStore({
  state() {
    return {
      count: 1,
    };
  },
});

同时这在技术上并不是一个破坏性的改动,你依然可以用 语法,不过我们推荐你用新语法,这样可以和 Vue3 以及 Vue Router 4 保持一致。new Store(...)

在 Vue 实例上安装 Vuex,传递 store 即可。

import { createApp } from "vue";
import { store } from "./store";
import App from "./App.vue";
const app = createApp(App);
app.use(store);
app.mount("#app");


构建产物和 Vue3 一致


以下的构建产物可以和 Vue3 的产物保持一致:

  • vuex.global(.prod).js
  • 直接在浏览器中使用 ,暴露全局 Vuex 变量。<script src="...">
  • 全局构建会被打包成 IIFE,并不是 UMD,仅用于直接使用 引入。<script src="...">
  • 包含了硬编码的 分支判断, 是压缩后的,在生产环境记得使用这个文件。prod/devprod.js
  • vuex.esm-broswer(.prod).js
  • 为了使用 native ES module imports(需要浏览器支持 es module 用法,)<script type="module">
  • vuex.esm-bundler.js
  • 为了通过 , , 等构建工具使用模块。webpackrolluppercel
  • 保留 分支判断和 判断(这个变量需要被构建工具替换)prod/devprocess.env.NODE_ENV
  • 并不会提供 minified 版本(构建工具可以引入后一起处理)
  • vuex.cjs.js
  • 为了使用 Node.js 服务端渲染时通过 导入。require()


类型 ComponentCustomProperties


Vuex 4 移除了为了推导 而编写的全局类型,解决了 issue #994[3],在使用 TypeScript 时,你必须自己手动添加模块类型声明。this.$store

在项目中使用如下的代码, 就可以正确推导: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 中, 函数从 中导出,现在它被包含在核心包中了,你可以直接这样导入:createLoggervuex/dist/logger

import { createLogger } from "vuex";


自 4.0.0-rc.2 以来的 Bug 修复


  • 未导出 (4ab2947[4]storeKey)
  • 修复 webpack 中 树摇晃 未生效 (#1906[5]) (#1907[6]) (aeddf7a[7])

原文发布地址


https://github.com/vuejs/vuex/releases/tag/v4.0.0


参考资料


[1]

源码的 示例文件夹: https://github.com/vuejs/vuex/tree/v4.0.0/examples

[2]

next.vuex.vuejs.org:https://next.vuex.vuejs.org/

[3]

问题 #994:https://github.com/vuejs/vuex/issues/994

[4]

4ab2947:https://github.com/vuejs/vuex/commit/4ab294793a2c20ea6040f01f316618682df61fff

[5]

#1906: https://github.com/vuejs/vuex/issues/1906

[6]

#1907: https://github.com/vuejs/vuex/issues/1907

[7]

AEDDF7A: https://github.com/vuejs/vuex/commit/aeddf7a7c618eda7f316f8a6ace8d21eb96c29ff

相关文章
|
3月前
|
存储 供应链 安全
《区块链简易速速上手小册》第7章:区块链在其他行业的应用(2024 最新版)
《区块链简易速速上手小册》第7章:区块链在其他行业的应用(2024 最新版)
128 1
|
3月前
|
存储 供应链 安全
《区块链简易速速上手小册》第1章:区块链概览(2024 最新版)
《区块链简易速速上手小册》第1章:区块链概览(2024 最新版)
42 1
|
3月前
|
安全 Java 关系型数据库
社区团购|生鲜团购|基于Springboot+Vue实现前后端分离社区团购
社区团购|生鲜团购|基于Springboot+Vue实现前后端分离社区团购
|
开发者
隐语“官网”新版上线!彩蛋连连,速来探索
隐语“官网”新版上线!彩蛋连连,速来探索
243 0
|
编解码 人工智能 大数据
久等了!阿里云开发者社区APP服务上线啦!
阿里云开发者社区APP服务上线啦!本文将为大家介绍APP服务中不可错过的亮点及下载地址。
2844 4
久等了!阿里云开发者社区APP服务上线啦!
|
数据采集 监控 Dubbo
官宣!Hippo4j 1.4.x 新版本正式发布,探索更多玩法
官宣!Hippo4j 1.4.x 新版本正式发布,探索更多玩法
293 0
|
Java Maven
基于springboot+vue前后端分离的二手【校园/社区/市场】交易市场
基于springboot+vue前后端分离的二手【校园/社区/市场】交易市场
160 0
基于springboot+vue前后端分离的二手【校园/社区/市场】交易市场
|
存储 安全 JavaScript
GitLab 对免费用户实施存储限制;谷歌数据中心发生爆炸;新版 Vue 3 中文文档上线 | 思否周刊
GitLab 对免费用户实施存储限制;谷歌数据中心发生爆炸;新版 Vue 3 中文文档上线 | 思否周刊
221 0
|
云安全 Cloud Native 自动驾驶
Gitee关闭部分开源仓库:先审核再上线;技术团队20天开发出App后集体被裁,负责人怒用公司公号发文祝“早日倒闭” | Q资讯
国家级数据云平台“人民云”正式上线;Gitee 关闭部分开源仓库:先审核再上线;字节回应游戏发行业务线裁员 80%:有调整,无大规模裁员;小米总裁透露小米汽车进展:计划不变,正研发核心技术;腾讯公开披露近六成员工超 30 岁、员工年流失率上升,马化腾承认腾讯面临挑战;谷歌俄罗斯分公司申请破产,官方回应称“银行账户被俄罗斯没收”;链家程序员删除公司 9TB 数据被判 7 年,二审维持原判;腾讯起诉 vivo 不正当竞争,将于 5 月 20 日开庭;技术团队 20 天开发出 App 后集体被裁,负责人怒用公司公号发文祝“早日倒闭”;马斯克大赞微信:功能强大,还没有垃圾信息;马斯克大赞微信:功能强大
325 0
Gitee关闭部分开源仓库:先审核再上线;技术团队20天开发出App后集体被裁,负责人怒用公司公号发文祝“早日倒闭” | Q资讯