QCon 全球软件开发大会(北京站)门票 9 折倒计时 4 天,点击立减 ¥880 了解详情
写点什么

Vuex 4 正式发布:打包现在与 Vue 3 一致

2021 年 2 月 05 日

Vuex 4 正式发布:打包现在与 Vue 3 一致

Vuex 是一个专门为 Vue.js 应用程序开发的状态管理模式。Vuex 采用集中式存储管理应用的所有组件组件的状态。换句话说,Vuex 就是帮开发者存储多个组件共享的数据,方便开发者对其读取的更改的工具。


Vuex 4 正式版本现已正式发布。


Vuex 4 的改进重点是兼容性。Vuex 4 支持 Vue 3,并提供了与 Vuex 3 完全相同的 API,因此用户可以在 Vue 3 中重用现有的 Vuex 代码。


这个版本还包含一些重大更改,详情见后文。


关于 Option 和 Composition API 的基本用法,请参见 example 目录。


新版还是用 NPM 包发布,放在 next 标签下,和 Vue 3 是一样的。我们计划在 Vue 3 拿掉 next 标签后一并移除 Vuex 4 的 next 标签。


社区为 Vuex 4 的稳定版做出了许多贡献,感谢大家的帮助。

文档

要查看文档,请访问Vuex 官网

重大更改

安装流程已更改

为了与新的 Vue 3 初始化流程保持一致,Vuex 的安装流程已更改。


用户要创建新的 store 实例时,推荐使用新引入的 createStore 函数。


import { createStore } from 'vuex'export const store = createStore({  state() {    return {      count: 1    }  }})
复制代码


从技术上来讲这并不是一个重大更改,不过你还是可以使用 newStore(...)语法,我们建议大家用这种方法来和 Vue 3、Vue Router 4 保持一致。


要将 Vuex 安装到 Vue 实例,请传递 store 实例(而不是 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

  • 在浏览器中直接用于<scriptsrc="...">。全局公开 Vuex。

  • 全局构建是作为 IIFE 而不是 UMD 构建的,并且只能与<scriptsrc="...">直接共用。

  • 包含硬编码的 prod/dev 分支,并且 prod 构建已预先最小化。使用.prod.js 文件用于生产。

  • vuex.esm-browser(.prod).js

  • 用于原生 ES 模块导入(包括通过<script type="module">支持模块的浏览器。)

  • vuex.esm-bundler.js

  • 用于 webpack、rollup 和 parcel 等打包器。

  • 带有 process.env.NODE_ENV 防护的 prod/dev 分支不受影响(必须由打包器代替)。

  • 不提供缩小的构建(打包后与剩余代码一起处理)。

  • vuex.cjs.js

  • 用于带有 require()的 Node.js 服务端渲染。

ComponentCustomProperties 的类型化

Vuex 4 删除了其在 Vue 组件中 this.$store 的全局类型,以解决问题 #994。与 TypeScript 一起使用时,用户必须声明自己的模块扩充。


将以下代码放在你的项目中,以使 this.$store 正确类型化:


// vuex-shim.d.tsimport { 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'
复制代码

4.0.0-rc.2 后加入的错误修复

  • 导出缺少的 storeKey(4ab2947)

  • 修复在 Webpack 包中无法摇树的问题(#1906)(#1907)(aeddf7a)


原文链接:


https://github.com/vuejs/vuex/releases

2021 年 2 月 05 日 12:003181

评论

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

第 0 期架构师训练营第5 周作业1

傅晶

第 0 期架构师训练营第 6 周作业1

傅晶

增量了两个私有网络之后的对比

孙朝辉🐢

linux入门系列18--Web服务之Apache服务1

黑马腾云

Linux centos apche linux运营 centos网站部署

视频AI第一步-动作识别数据集

flow

Python作业留底--《菜鸟教程》Python 练习和习题

Geek_f6bfca

Go: ElasticSearch客户端学习

陈思敏捷

go golang elasticsearch elastic go-elasticsearch

更新丢失、写偏、幻读:数据库事务从快照隔离到可序列化

青菜年糕汤

数据库 数据库事务 分布式数据库 数据库设计 分布式系统

年薪80万难觅技术人才 杭州区块链人才需求旺盛

CECBC区块链专委会

区块链 新基建 大学专业

linux入门系列16--文件共享之Samba和NFS

黑马腾云

Linux centos linux运维 Samba NFS

linux入门系列18--Web服务之Apache服务2

黑马腾云

Apache Linux centos linux运维

ARTS Week9

丽子

ARTS 打卡计划

搬家,又一次和过往告别

王磊

程序人生

区块链技术发展面临七大关键挑战以及未来的五大展望

CECBC区块链专委会

区块链 新基建 数字型资产

第 0 期架构师训练营第 6 周作业2-总结

傅晶

避免栽坑之掌握Jenkins工作原理

清菡

jenkins

打通微信和钉钉服务是一种怎样的体验?

Ceelog

go 微信 钉钉 微信公众号

求索十五载:百度地图绘就的时代浪漫

脑极体

linux入门系列19--数据库管理系统(DBMS)之MariaDB

黑马腾云

MySQL Linux centos linux运维 MariaDB

算法导论

华宇法律科技

算法

Flink-有状态算子的扩缩容-12

小知识点

scala 大数据 flink

当“基本功”数据结构与算法被图形分解,要还不会就真的没办法了

周老师

Java 编程 程序员 架构 面试

800页PPT搞懂阿里技术及生态全貌,“未入阿里,知根知底”

周老师

Java 编程 程序员 架构 面试

linux入门系列17--邮件系统之Postfix和Dovecot

黑马腾云

Linux centos Dovecot Postfix 邮件系统

什么是分散式金融(DeFi)?

志学Python

去中心化金融 defi

并发杂谈系列0 序与目录

八苦-瞿昙

随笔杂谈

oeasy教您玩转linux010108到底哪个which

o

如何开成功一个回顾会

技术管理Jo

敏捷教练 回顾会 引导者

第 0 期架构师训练营第 5 周作业 2-总结

傅晶

linux入门系列20--Web服务之LNMP架构实战

黑马腾云

php MySQL Linux centos ngnix

二叉树深度和大文件排序

escray

学习 面试 面试题 面试现场

边缘计算隔离技术的挑战与实践

边缘计算隔离技术的挑战与实践

Vuex 4 正式发布:打包现在与 Vue 3 一致-InfoQ