首页 > 其他分享 >Vuex 和 Pinia两种状态管理工具,该选择哪一个呢?

Vuex 和 Pinia两种状态管理工具,该选择哪一个呢?

时间:2024-07-22 16:56:33浏览次数:19  
标签:count const increment 管理工具 state Pinia Vuex

文章目录

当项目逐渐变大时,状态管理的问题开始显现了出来。这时,两个强大的状态管理工具:Vuex 和 Pinia。该选择哪一个呢?

1,Vuex

Vuex 是 Vue.js 的官方状态管理库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

它的核心理念是:单一状态树,即一个对象就包含了全部应用层级状态。这个理念使得调试和监控变得简单,因为我们可以轻松追踪状态的变化。

在这里插入图片描述
Vuex 的优点:

  1. 集中式管理:所有状态集中在一个地方,易于管理和调试。

  2. 时间旅行调试:通过 Vue DevTools,可以回溯和重播状态变化。

  3. 插件支持:有许多现成的插件和中间件,如持久化插件、表单插件等。

Vuex 的缺点:
4. 代码冗长:使用 Vuex 通常需要写很多样板代码。

  1. 学习曲线:对新手来说,理解和掌握 Vuex 的概念和用法可能需要一些时间。
<!-- store.js -->
import { createStore } from 'vuex'

const store = createStore({
  state() {
    return {
      count: 0
    }
  },
  mutations: {
    increment(state) {
      state.count++
    }
  },
  actions: {
    increment({ commit }) {
      commit('increment')
    }
  },
  getters: {
    count: (state) => state.count
  }
})

export default store

2,Pinia

Pinia 是 Vue 生态系统中的一匹黑马,它是新一代的状态管理库。Pinia 借鉴了 Vuex 的理念,但提供了更简洁和现代的 API。

Pinia 被设计为 Vue 3 的默认状态管理工具,完全支持 Composition API 和 TypeScript。

在这里插入图片描述
Pinia 的优点

  1. 简洁的 API:相比 Vuex,更少的样板代码,更简洁的语法。

  2. 与 Composition API 无缝集成:充分利用 Vue 3 的 Composition API 特性。

  3. 模块化:更加自然的模块化支持,不需要像 Vuex 那样繁琐的模块配置。

Pinia 的缺点
4. 生态系统:相对于 Vuex,Pinia 的插件和中间件支持还在不断完善中。

  1. 习惯迁移:如果你已经熟悉了 Vuex,可能需要一些时间来适应 Pinia 的新语法。
<!-- store.js -->
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
  state: () => {
    return { count: 0 }
  },
  actions: {
    increment() {
      this.count++
    }
  },
  getters: {
    doubleCount: (state) => state.count * 2
  }
})

3,计数器应用

使用 Pinia 和 Vuex 构建一个计数器应用

3.1,使用 Vuex

  1. 安装 Vuex:
 npm install vuex@next
  1. 创建 Vuex Store:
<!-- store.js -->
   import { createStore } from 'vuex'

   const store = createStore({
     state() {
       return {
         count: 0
       }
     },
     mutations: {
       increment(state) {
         state.count++
       }
     },
     actions: {
       increment({ commit }) {
         commit('increment')
       }
     },
     getters: {
       count: (state) => state.count
     }
   })

   export default store
  1. 在 Vue 组件中使用 Vuex:
   <script setup>
   import { computed } from 'vue'
   import { useStore } from 'vuex'

   const store = useStore()
   const count = computed(() => store.getters.count)

   const increment = () => {
     store.dispatch('increment')
   }
   </script>

   <template>
     <div>
       <p>{{ count }}</p>
       <button @click="increment">Increment</button>
     </div>
   </template>

3.2,使用 Pinia

  1. 安装 Pinia:
   npm install pinia
  1. 创建 Pinia Store:
  <!-- store.js -->
   import { defineStore } from 'pinia'

   export const useCounterStore = defineStore('counter', {
     state: () => {
       return { count: 0 }
     },
     actions: {
       increment() {
         this.count++
       }
     },
     getters: {
       doubleCount: (state) => state.count * 2
     }
   })
  1. 在 Vue 组件中使用 Pinia:
  <script setup>
   import { computed } from 'vue'
   import { useCounterStore } from './store'

   const counterStore = useCounterStore()
   const count = computed(() => counterStore.count)

   const increment = () => {
     counterStore.increment()
   }
   </script>

   <template>
     <div>
       <p>{{ count }}</p>
       <button @click="increment">Increment</button>
     </div>
   </template>

4,结论

经过对比,我个人更倾向于使用 Pinia,原因如下:

  1. 简洁易用:Pinia 的 API 更加简洁,减少了样板代码,提高了开发效率。

  2. 与 Composition API 集成更好:Pinia 完美支持 Vue 3 的 Composition API,使得代码更具现代化和可读性。

  3. 未来趋势:随着 Vue 3 的普及,Pinia 作为 Vue 3 的推荐状态管理工具,生态系统也在快速成长。

当然,这并不是说 Vuex 不好。Vuex 作为成熟的状态管理工具,有着丰富的插件和中间件支持,尤其是在大型项目中,Vuex 依然是一个非常可靠的选择。

无论你选择 Vuex 还是 Pinia,都需要根据项目的具体需求和团队的技术背景来做出决定。毕竟,最好的工具永远是最适合你项目的那一个。

在这里插入图片描述


人生从来没有真正的绝境。只要一个人的心中还怀着一粒信念的种子,那么总有一天,他就能走出困境,让生命重新开花结果。


标签:count,const,increment,管理工具,state,Pinia,Vuex
From: https://blog.csdn.net/weixin_43025151/article/details/140601196

相关文章

  • 施工行业必备:2024年值得选择的项目管理工具
    国内外主流的10款施工项目进度管理软件对比:PingCode、Worktile、ContractorForeman、建设工程项目管理平台(JSGC)、智慧工地综合管理系统、工程项目信息管理系统(GCXX)、Buildertrend、Procore、AutodeskConstructionCloud、Fieldwire、ClickUp、monday.com。在施工行业中,项目延......
  • 找到完美匹配:2024年最佳免费缺陷管理工具
    国内外主流的10款缺陷跟踪工具对比:PingCode、Worktile、滴答清单、CalendarTask、专注清单、Todo清单、Jira、Bugzilla、MantisBT、Redmine。在寻找合适的缺陷管理工具时,很多团队面临一个共同的挑战:如何在有限的预算内找到既高效又易于使用的解决方案。许多免费工具虽然诱人,但......
  • DBeaver安装教程(开发人员和数据库管理员通用数据库管理工具)
    前言DBeaver是一个通用的数据库管理工具和SQL客户端,支持MySQL,PostgreSQL,Oracle,DB2,MSSQL,Sybase,Mimer,HSQLDB,Derby,以及其他兼容JDBC的数据库。DBeaver提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB数据,修改数据库结......
  • vue3中如何使用vuex
    在Vue3中,可以使用Vuex来进行状态管理。下面是在Vue3中使用Vuex的步骤:安装Vuex:使用npm或yarn命令行工具安装Vuex库。npminstallvuex创建Vuexstore:在src文件夹中创建一个store文件夹,并在其中创建一个index.js文件。在index.js文件中,引入Vue和Vuex库,创建一个新的Store实......
  • vue3 ----- Pinia
    什么是PiniaPinia基础使用getters实现action异步实现编写方式:异步action函数的写法和组件中获取异步数据的写法完全一致storeToRefs工具函数Pinia的调试Pinia持久化插件官方文档:Home|pinia-plugin-persistedstate安装插件pinia-plugin-persistedstatenpmi......
  • 快速指南:软件缺陷管理工具的选择技巧
    国内外主流的10款软件缺陷管理工具软件对比:PingCode、Worktile、禅道、Tapd、Teambition、Tower、JIRA、Bugzilla、MantisBT、Trac。在软件开发过程中,管理缺陷和漏洞常常成为一项挑战,尤其是在项目规模庞大时。选择一个高效的软件缺陷管理工具不仅可以提升开发效率,还能确保产品......
  • 在deepin linux系统中安装sqlynx数据库管理工具
    一、官网下载:https://www.sqlynx.com/#/home/probation/SQLynx二、解压后在终端输入命令1.进入目录输入命令./maicong-sqlynx.sh2.修改权限chmod+xjdk1.8.0_351//bin/java3.安装./maicong-sqlynx.sh4.启动sudoshmaicong-sqlynx.shstart5.查询端口号taillog/......
  • Python 潮流周刊#60:Python 的包管理工具真是多啊(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。本期周刊分享了13篇文章,13个开源项目,全文2300字。重要提醒:1、本专栏的......
  • Electron-ViteChat桌面端聊天室|electron31+vite5+pinia2仿微信EXE程序
    原创研发Electron31+vue3+elementPlus仿微信客户端聊天应用。使用最新跨平台技术electron31.x+vite5+vue3setup+pinia2+element-plus实战开发电脑版聊天室Exe程序。整个聊天程序界面清爽简约,支持展示/收缩侧边栏、electron新开多窗口、换肤等功能。electron-vitechat......
  • 常见webshell管理工具流量分析
    1.蚁剑蚁剑设置代理后bp抓包,bp看流量方便一点默认编码器流量分析进入文件管理器的两个数据包:解码后的数据为:7=@ini_set("display_errors","0");@set_time_limit(0);functionasenc($out){return$out;};functionasoutput(){$output=ob_get_contents();ob_end_clean();e......