位置: IT常识 - 正文

Vue.js 状态管理:Pinia 与 Vuex(vuex状态机)

编辑:rootadmin
Vue.js 状态管理:Pinia 与 Vuex 💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】

推荐整理分享Vue.js 状态管理:Pinia 与 Vuex(vuex状态机),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue的状态改变方式,vue状态管理相关的面试题,vuex状态管理几种状态,vue.js状态管理工具,状态管理vuex,vuex状态管理几种状态,vue.js状态管理工具,vue.js状态管理工具,内容如对您有帮助,希望把文章链接给更多的朋友!

目录Pinia 和 Vuex 简介什么是Pinia?什么是 Vuex?Pinia 的特点模块化设计完整的开发工具支持Pinia 很直观Pinia 是可扩展的TypeScript 支持Pinia 轻量的Vuex的特点模块开发工具支持热重载TypeScript 支持Pinia和Vuex的代码对比Pinia 和 Vuex 的优缺点Pinia 的优点Pinia 的缺点Vuex 的优点Vuex 的缺点我应该使用哪个:Pinia 还是 Vuex?结论⭐️ 好书推荐

Vuex 和 Pinia 是用于管理 Vue.js 应用程序状态的标准 Vue.js 库。让我们比较一下他们的代码、语言、功能和社区支持。

如果没有合适的库,开发人员管理应用程序的状态可能会很困难。Vuex 和 Pinia 是标准的 Vue.js 库,用于处理应用程序中的条件。这两个库都非常适合状态管理,但是由于它们出色的特性和功能,选择哪个库用于你的项目需要时间并且令人沮丧。好吧,我们将在本文中看看为什么一个是最好的。

在本文中,我们将通过实际代码示例查看代码比较、它们的变体、功能,以及推荐使用哪一个来管理你的状态应用程序,以便更好地理解。我们还将考虑每个产品的语言、功能和社区支持。

Pinia 和 Vuex 简介

我将简要总结 Vuex 和 Pinia。如果你想要更详尽的解释,我建议阅读Vuex 文档和Pinia 文档。

什么是Pinia?

Pinia是一个新的状态管理库,可帮助你在 Vue.js 应用程序中跨组件管理和存储响应数据和状态。Pinia 由 Vue 核心团队成员之一 Eduardo San Martin Morote 创建。

Pinia 使用新的反应系统来构建一个直观且完全类型化的状态管理系统。

库中引入的新特性是促成 Pinia 推荐的因素之一。总体而言,Pinia 显得轻巧、简单且易于掌握。它拥有可以使 Vue 3 和 Vue 2 中的编程变得通用的一切。因此,这是试用 Pinia 的理想机会。

什么是 Vuex?

Vuex是一种状态管理模式和库,构建为集中式存储,可帮助你维护 Vue 应用程序中存在的所有组件的状态。Vuex 遵循确保你的状态突变为预测标准的规则。

使 Vuex 更强大的一个因素是组件从 Vuex store 中获取它们的状态,并且可以快速有效地响应 store 状态的变化。

Vuex虽然是维护你store的状态管理库,但建议你熟悉或搭建过大型SPA。如果你没有经验,Vuex 可能会冗长且令人生畏。

如果你的应用程序很广泛,你需要管理复杂的数据流,并且你有嵌套的组件,你可以使用 Vuex。查看官方文档以获取有关何时使用 Vuex 的更多信息。

Pinia 的特点

Pinia 和 Vuex 之间的区别之一是 Pinia 是“模块化设计”,换句话说,它被构建为拥有多个商店,而 Vuex 只有一个商店。在这些商店中,您可以拥有子模块。除此之外,Pinia 允许将这些模块中的每一个从他们的商店直接导入到需要的组件中。

模块化设计

如果您是一名 Vue 开发人员并且曾使用 Vuex 管理应用程序的状态,您会注意到 Vuex 只有一个商店。在该商店中,您可以在其中包含多个模块。使用 Pinia,您可以将这些模块中的每一个都存储在一个地方,并在需要时将它们直接导入到组件中。

此方法允许捆绑器自动对它们进行代码拆分,并提供更好的 TypeScript 推理。

完整的开发工具支持

Pinia 提供开发工具支持,以帮助您使用该库构建和轻松调试。当我们安装 Pinia 时,它会自动挂接到我们的 Vue.js 开发工具,并让我们跟踪对我们的商店所做的更改,这让我们在 Vue.js 版本(Vue 2 和 Vue3)中获得流畅的开发人员体验。

Pinia 很直观

Pinia 提供了一个简单的 API,使您的商店的编写变得简单且井井有条,就像创建组件一样。这意味着与 Vuex 解决方案相比,需要掌握的样板文件和概念更少。

Pinia 是可扩展的

Pinia 还提供了一个完整的插件系统,具有交易和本地存储同步等功能,适用于 Pinia 默认行为不足的情况。

TypeScript 支持

Pinia 提供比 Vuex 更好的 TypeScript 支持,具有 Javascript 自动完成功能,这使得开发过程变得简单。

Pinia 轻量的

Pinia 的重量只有 1 KB,因此很容易融入您的项目。这可能会提高您的应用程序性能。

Vuex的特点模块Vue.js 状态管理:Pinia 与 Vuex(vuex状态机)

当您的应用程序扩展时,遍历变得很困难。但是,使用 Vuex 模块,您可以根据领域功能将您的商店拆分为多个文件,并从该特定命名空间中的模块访问状态循环。

开发工具支持

Vue devtools 中的 Vuex 选项卡允许我们查看状态并跟踪我们的变化。这使我们能够快速评估我们的程序如何执行和调试错误。

热重载

Vuex支持热重载功能,它使用 webpack 的热模块替换 API,可以在您开发时快速重载您的 mutations、modules、action 和 getters。

TypeScript 支持

如果你想编写一个 TypeScript 存储定义,Vuex 可以提供它的类型并且更容易实现。它有一个默认的 TypeScript 配置,不需要额外的设置。

Pinia和Vuex的代码对比

Pinia 是一个轻量级库,可帮助您管理整个应用程序的反应状态。与 Vuex 相比,Pinia API 易于学习,使您的代码更易于阅读。

让我们看一下使用 Pinia 和 Vuex 管理我们的状态的代码比较:

Vuex

在此示例中,我们将查看一个简单的 Vuex 存储,它跟踪待办事项列表项的状态:

import { createStore } from 'vuex'const TodoListstore = createStore({ state() { return { todoListItems: [] } }, actions: { addNewList({ commit }, item) { { commit('createNewItem', item) } }, mutations: { createNewItem(state, item) { state.todoListItems.push(item) } }})

如果你看上面的代码,你可以看到 Vuex 存储中的三个动作:状态、 动作和突变。状态返回当前的todoListItems,动作提交一个突变来创建一个新项目,最后,突变创建新项目并将其添加到列表中。当你构建一个更大的应用程序时,你可能会意识到动作和突变相对相似,导致冗余代码,因为每个状态变化都需要一个样板。

Pinia

使用 Pinia 简单 API,您可以消除突变和冗余代码。让我们查看一个代码示例,了解当您使用 Pinia 实现之前的代码时的样子:

import { defineStore } from 'pinia'Export const useListStore = defineStore('list', { state() => ({ return { todoListItems: [] } }), actions: { addNewList() { this.todoListItems.push(item) } }})

上面的示例是 Pinia API 在管理应用程序状态时如何工作的简单代码。使用 Pinia,我们删除了突变并将其直接更新到我们的动作中。

注意:在上面的代码示例中,当我们将项目直接提交给我们的操作时,我们不需要跟踪我们的项目。

Pinia 和 Vuex 的优缺点

Pinia 和 Vuex 是控制应用程序状态的优秀工具,但其中一个必须具有另一个所没有的某些功能。让我们来看看它们是什么。

Pinia 的优点Pinia 允许你在不重新加载页面的情况下修改你的商店。它在 JavaScript 中提供 TypeScript 支持和良好的自动完成功能。Pinia 提供 devtool 支持,这有助于增强开发人员使用该工具的体验。Pinia 只有状态、吸气剂和动作。不需要突变。使用 Pinia,你可以将状态存储在一个地方,并在请求时将其传递给它们的组件。它是一个重量为 1 KB 的轻量级库。它提供服务器端渲染支持和自动类型模块,无需额外工作。Pinia 兼容 Vue 2 和 Vue 3。Pinia 的缺点与 Vuex 相比,它没有庞大的社区支持和解决方案。Pinia 不支持调试功能,如时间旅行和编辑。Vuex 的优点Vuex 有 mutations、getters 和 actions。与 Pinia 相比,Vuex 的社区支持很大。Vuex 支持调试功能,如时间旅行和编辑。Vuex 的缺点它对 TypeScript 不友好。你只能将其用于大型 SPA。我应该使用哪个:Pinia 还是 Vuex?

好吧,这就是它变得更具挑战性的地方,因为仍然有一些项目需要使用 Vuex 来处理状态应用程序,即使 Pinia 是新推荐的状态管理库。它有几个 Vuex 没有的有价值的功能。

Vuex 仍然是构建大型 SPA 的理想解决方案,因为对于构建中小型应用程序的人来说,它相当冗长。

Pinia 也一样。尽管如此,如果你需要所有列出的功能,例如 devtool 支持、TypeScript 支持和状态应用程序的轻松管理,那么 Pinia 是最好的解决方案——它为你提供流畅的开发体验。

如果你正在构建一个不太复杂的应用程序,无论是中等到广泛的应用程序,你都可以使用 Pinia,因为它的重量约为 1 KB。

结论

由于功能多样,在管理应用程序状态时,在 Vuex 和 Pinia 之间进行选择可能会造成混淆。不过,这两个框架都非常适合管理状态应用程序。本文简要比较了它们的特性、功能和对代码的影响。读完这篇文章后,也许你将能够找到适合你的库。

⭐️ 好书推荐

《Vue.js 快速入门实战》

【内容简介】

Vue.js 快速入门实战以Vue.js的知识点为基础,结合TypeScript的使用,循序渐进地介绍了Vue.js 3.0(简称Vue3)的知识点和实战技巧,可以帮助零基础的读者掌握独立开发项目和部署项目上线的技术。全书共14章,包括Vue.js概述、搭建开发环境、Vue.js组合式API、Vue.js的模板语法、Vue.js的计算属性和侦听器、Vue.js中class和style的绑定、Vue.js的表单开发、Vue.js的组件开发、Vue.js的网络请求、Vue.js的状态管理、Vue.js的路由管理、Vue的项目部署、在线招聘网站开发实战以及招聘网站后台管理系统开发实战。

📚 京东自营购买链接:《Vue.js 快速入门实战》

本文链接地址:https://www.jiuchutong.com/zhishi/300750.html 转载请保留说明!

上一篇:【数据挖掘】-支持向量机(SVM)+代码实现(数据挖掘论文选题)

下一篇:前端开发工程师简历(前端开发工程师是干嘛的)

  • 淘宝怎么申请价保(手机淘宝怎么申请价格保护)

    淘宝怎么申请价保(手机淘宝怎么申请价格保护)

  • 网易云购买的专辑在哪里可以看到(网易云购买的专辑在哪里查看)

    网易云购买的专辑在哪里可以看到(网易云购买的专辑在哪里查看)

  • iPhone连接系统没有发挥作用(苹果系统无法连接)

    iPhone连接系统没有发挥作用(苹果系统无法连接)

  • 退款后集分宝不见了(如果申请退款集分宝会退吗?)

    退款后集分宝不见了(如果申请退款集分宝会退吗?)

  • 拼多多火车票怎么取票(拼多多火车票怎么选下铺)

    拼多多火车票怎么取票(拼多多火车票怎么选下铺)

  • excel表格排序时其他数据乱了(excel表格排序单元格大小不一样怎么办)

    excel表格排序时其他数据乱了(excel表格排序单元格大小不一样怎么办)

  • windows7一键还原在哪(windows7一键还原软件)

    windows7一键还原在哪(windows7一键还原软件)

  • 华为的人工智能叫什么(华为的人工智能叫什么名字)

    华为的人工智能叫什么(华为的人工智能叫什么名字)

  • 校园网认证失败是什么原因(校园网认证失败无法连接认证服务器)

    校园网认证失败是什么原因(校园网认证失败无法连接认证服务器)

  • qq在线为什么显示离线(qq在线为什么显示4g)

    qq在线为什么显示离线(qq在线为什么显示4g)

  • 苹果手机没有耳机孔怎么办(苹果手机没有耳机孔怎么插银行u盾)

    苹果手机没有耳机孔怎么办(苹果手机没有耳机孔怎么插银行u盾)

  • 8k是多少像素(8k像素是什么意思)

    8k是多少像素(8k像素是什么意思)

  • 进程实体是由哪三部分组成(进程实体由哪四部分组成)

    进程实体是由哪三部分组成(进程实体由哪四部分组成)

  • 登ID显示连接服务器出现问题(登陆apple id时显示连接服务器出现问题)

    登ID显示连接服务器出现问题(登陆apple id时显示连接服务器出现问题)

  • 手机卡欠费不交有什么影响(手机卡欠费不交会自动注销吗)

    手机卡欠费不交有什么影响(手机卡欠费不交会自动注销吗)

  • vivoy85手机带红外线吗(vivo手机有红线吗)

    vivoy85手机带红外线吗(vivo手机有红线吗)

  • wps表格里面怎么画线(wps表格里面怎么添加pdf文件内容)

    wps表格里面怎么画线(wps表格里面怎么添加pdf文件内容)

  • 苹果8的屏幕尺寸(苹果8的屏幕尺寸和13对比)

    苹果8的屏幕尺寸(苹果8的屏幕尺寸和13对比)

  • 小米路由器怎么设置(小米路由器怎么重启)

    小米路由器怎么设置(小米路由器怎么重启)

  • 小米手环3不见了怎么找回(小米手环3不见了也没连接怎么找)

    小米手环3不见了怎么找回(小米手环3不见了也没连接怎么找)

  • 小米4平板能打电话吗(小米4平板打电话的怎么打)

    小米4平板能打电话吗(小米4平板打电话的怎么打)

  • iPhone xr支不支持Face ID功能(iphonexr支不支持wifi6)

    iPhone xr支不支持Face ID功能(iphonexr支不支持wifi6)

  • 苹果gif发到qq不动(苹果发的gif安卓看不动)

    苹果gif发到qq不动(苹果发的gif安卓看不动)

  • 阿米洛是哪国的品牌(阿米洛是国产吗)

    阿米洛是哪国的品牌(阿米洛是国产吗)

  • 如何使用windows恶意软件删除工具(如何使用windows10自带杀毒)

    如何使用windows恶意软件删除工具(如何使用windows10自带杀毒)

  • 在Linux下通过WEB认证方式上网(linux web gui)

    在Linux下通过WEB认证方式上网(linux web gui)

  • 日出时的麦克拱岩,俄勒冈南海岸 (© Dennis Frates/Alamy)

    日出时的麦克拱岩,俄勒冈南海岸 (© Dennis Frates/Alamy)

  • 前端实现 微信扫码登录网站 pc端(二维码嵌套页面) 超详细,包会(前端实现微信联系人二维码)

    前端实现 微信扫码登录网站 pc端(二维码嵌套页面) 超详细,包会(前端实现微信联系人二维码)

  • 个税申报的收入是应发还是实发
  • 北京增值税发票查验平台
  • 会计凭证的数字书写示例图
  • 印花税是根据销售额提吗
  • 公司基本户如何注销
  • 技术服务费属于哪个商品编码
  • 小规模纳税人开普票要交税吗
  • 转账支票背书转让样本
  • 年底暂估成本有风险吗
  • 划拨土地使用权出租
  • 退货后发票还能拿去抵税吗
  • 印花税计提和缴纳凭证
  • 小规模纳税人跨月冲红退税
  • 浙江印花税税率
  • 上年计提的费用往来,能冲回吗
  • 结转成本是否要等货物卖出后
  • 建筑工地临时工工伤
  • 销售净利率范围
  • 安装监控违法吗
  • 股东分红的会计科目怎么做
  • 对公账户转私人账户手续费多少
  • 冲销以前年度多计提的工资资产负债表怎么平
  • 企业接受现金捐赠如何开具发票
  • wind10待机唤醒
  • PHP:move_uploaded_file()的用法_Filesystem函数
  • yarn install报错
  • 销售产品是销项税额还是进项税额
  • 消费税会计分录怎么做的
  • npm ERR! notarget No matching version found for xxx@^1.0.64. npm 插件安装失败
  • object的类有哪些
  • python魔法方法详解
  • 可转债公允价值变动计入
  • 公司给员工租房进项税可以抵扣吗
  • 收到稳岗补贴如何入账
  • dedecms进入数据库
  • 银行存款日记账怎么记账
  • 开票钱收不回怎么办
  • 房地产土地使用权计入存货吗
  • 社保公司承担部分怎么做账
  • 公司福利费用会计分录
  • 所得税费用本期金额怎么算
  • 土地增值税要计入税金及附加吗
  • 计算企业所得税可以扣除的税金
  • 进项税额转出如何申报
  • 所得税费用科目编码
  • 有限责任公司和有限公司区别在哪
  • 购入固定资产计累计盈余
  • 不动产租赁按简易计税吗
  • 可转换债券的转换比率计算公式
  • 航天金税服务费发票在哪打印
  • 哪些减值准备一经计提不得转回
  • 正常在职员工的工作时间
  • 小型便利店靠什么进行营利
  • 应付账款怎么做平
  • 会计结转是什么意思
  • 企业存货会计分录
  • mysqldump -s
  • SQLServer XML数据的五种基本操作
  • window小技巧
  • linux界面显示
  • 怎么给文件夹设置密码保护
  • win8的计算器在哪里
  • win10错误提示
  • win7系统安装软件权限设置
  • 产品密钥需要购买吗
  • win8系统怎样
  • Context.getExternalFilesDir()和Context.getExternalCacheDir()方法
  • ai控制器的简称是
  • 求婚表白的语句
  • openglvbo
  • jquery validate
  • js多选
  • jquery设置图片路径
  • jquery简单例子
  • node.js利用cas实现单点登录
  • 基于javascript的毕业设计
  • 河南电子税务局残保金怎么申报
  • 青岛税务局局长是什么级别?
  • 出口退税出现预缴怎么办
  • 海口税务服务大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设