JavaScript Pinia代替 Vuex的可行性分析

目录
  • 一、介绍
  • 二、对比
  • 三、使用
    • 1. 安装
    • 2. 注册
    • 3. 创建单个 store
    • 4. 组件内引用
    • 5. 更新 store  数据的4种方式
      • (1)直接修改特定的值
      • (2)利用 $patch 批量修改
      • (3)利用 $patch 单个修改特定的值
      • (4)利用 Actions 修改
    • 6. 其他
  • 四、总结

一、介绍

Vue 3.0 出来之前,数据存储的主流依旧是 Vuex。但是,当 Vue 3.0 问世后,官方为了迎合 Componsition API,进而设计了全新的状态管理 Pinia,而且未来的 Vuex 5 中提及的功能点正是 Pinia 目前已实现的。

! Vuex 5 提及的功能点:

  • 更好的兼容 Componsition AP
  • 更好的支持 TypeScript
  • 优化 modules 的嵌套结构
  • 支持热加载,无需刷新页面

二、对比

PiniaVuex 对比:

  1. Pinia 没有 mutations,且 actions 支持同步/异步,Vuex 同步 mutations,异步 actions
  2. Pinia 相比 Vuex 拥有更好的 TypeScript 支持
  3. Pinia 不再需要 modules 的嵌套结构,独立的 store,扁平化处理得以更好的代码分割
  4. Pinia 支持热加载,无需重载页面,保持现有状态
  5. PiniaVue 3 中支持缓存,而 Vuex 则不再支持
  6. Pinia 相比 Vuex 更加轻量化(体积约为 1K)
  7. Pinia 支持 $reset 方法,可以初始化 state
  8. Pinia 不支持 time-travel 功能,相对于 Vuex 调试功能还不成熟
  9. Pinia 同样也支持 Vue 2.0

三、使用

1. 安装

npm i pinia@next -S

2. 注册

index.js

import { createApp } from 'vue'
import element from 'element-plus'
import '@/assets/css/index.css'
import router from '@/router/index'
import App from './App'
import { createPinia } from 'pinia'
const app = createApp(App)
app.use(element).use(router).use(createPinia()).mount('#root')

3. 创建单个 store

store/user.js

import { defineStore } from 'pinia'
export const userStore = defineStore('user', {
  state: _ => {
    return {
      username: '张同学'
    }
  },
  getters: {
  },
  actions: {
    // 重置数据
    _reset() {
      this.$reset()
    }
  }
})

4. 组件内引用

Home.vue

<template>
  <div>
    姓名:{{ user_store.username }}
    <br />
    <el-button @click="change_username">修改名称</el-button>
    <el-button @click="user_store._reset()">重置</el-button>
  </div>
</template>
<script>
import { userStore } from '../store/user'
export default {
  setup() {
    let user_store = userStore() // 初始化 user_store

    return { user_store }
  }
}
</script>

5. 更新 store  数据的4种方式

(1)直接修改特定的值

let user_store = userStore()
/**
 * @description 修改用户名称
 */
let update = _ => {
  user_store.username = '张三'
}

(2)利用 $patch 批量修改

let user_store = userStore()
/**
 * @description 修改用户名称
 */
let update = _ => {
  user_store.$patch({
  	username: '张三'
  })
}

(3)利用 $patch 单个修改特定的值

let user_store = userStore()
/**
 * @description 修改用户名称
 */
let update = _ => {
  user_store.$patch(state => {
    state.username = '张三'
  })
}

(4)利用 Actions 修改

let user_store = userStore()
/**
 * @description 修改用户名称
 */
let update = _ => {
  user_store.update_username('张三')
}
// 修改用户名称
update_username(value) {
  this.username = value
}

6. 其他

从下面的截图我看可以看到自身的一些属性、方法等,诸如:$reset$patch 以及热更新相关的方法

关于 Pinia 数据持久化的问题,暂时没有完美的解决方案,待研究

四、总结

由于 Pinea 是轻量级的,体积很小,它适合于中小型应用。它也适用于低复杂度的 Vue.js 项目,因为一些调试功能,如时间旅行和编辑仍然不被支持。未来将 Vuex 用于中小型 Vue.js 项目是过度的,因为它重量级的,对性能有很大影响。因此,Vuex 适用于重量级、高复杂度的 Vue.js 项目。

到此这篇关于JavaScript Pinia代替 Vuex的可行性分析的文章就介绍到这了,更多相关JavaScript Pinia代替 Vuex内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • TypeScript Pinia实战分享(Vuex和Pinia对比梳理总结)

    目录 简介 安装 创建pinia并传递给vue实例 创建store state getters actions 在vue组件使用 获取state 获取getters 修改state 数据持久化 总结 简介 今天我们再来实战下官方推荐的新的vue状态管理工具Pinia. pinia 由 vue 团队中成员所开发的,因此也被认为是下一代的 vuex,即 vuex5.x,在 vue3 的项目中使用也是备受推崇.所以 pinia 的学习迫在眉睫. 下面我们正式开始pinia的学习吧. 安装 yarn a

  • JavaScript Pinia代替 Vuex的可行性分析

    目录 一.介绍 二.对比 三.使用 1. 安装 2. 注册 3. 创建单个 store 4. 组件内引用 5. 更新 store  数据的4种方式 (1)直接修改特定的值 (2)利用 $patch 批量修改 (3)利用 $patch 单个修改特定的值 (4)利用 Actions 修改 6. 其他 四.总结 一.介绍 在 Vue 3.0 出来之前,数据存储的主流依旧是 Vuex.但是,当 Vue 3.0 问世后,官方为了迎合 Componsition API,进而设计了全新的状态管理 Pinia,

  • Vue.js状态管理之Pinia与Vuex详解

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

  • Vue状态管理之使用Pinia代替Vuex

    目录 1.Pinia是什么 2.Pinia简单上手 3.使用体验 1.Pinia是什么 Pinia是一个vue的状态管理方案,是vuex团队成员开发,实现了很多vuex5的提案,更加地轻量化且有devtools的支持 vuex4一直被人诟病对于typescript的支持不良好,vuex5也迟迟未来 所以有了pinia的出现 相较于vuex: pinia无需创建复杂的包装器来支持typescript,对于typescript类型判断是天然支持的,享受ide带来的自动补全,减少开发的心智负担,减少v

  • 一文详解Pinia和Vuex与两个Vue状态管理模式

    目录 前言 安装 挂载 Vuex Pinia 修改状态 vuex Pinia Pinia解构(storeToRefs) getters Pinia Vuex modules Pinia Vuex 写在最后 前言 Pinia和Vuex一样都是是vue的全局状态管理器.其实Pinia就是Vuex5,只不过为了尊重原作者的贡献就沿用了这个看起来很甜的名字Pinia. 本文将通过Vue3的形式对两者的不同实现方式进行对比,让你在以后工作中无论使用到Pinia还是Vuex的时候都能够游刃有余. 既然我们要

  • 还在用vuex?来了解一下pinia

    目录 1.什么是pinia 2.优势 3.使用(非常简单) 总结 1. 什么是pinia 通俗的讲 : ① vuex精简版 ,而且vue官方更加推荐使用. ②优势又完胜于vuex ,下面我们来了解下pinia. 2.优势 pina vuex pinia 同时支持vue2和vue3 vue2要用vuex 3 版本vue3要用vuex 4 版本 不分同步异步,更好的ts支持 分同步异步,不太兼容ts 享受自动补全… 需要注入,导入函数,调用他们… 3. 使用 (非常简单) ① 安装 npm inst

  • 傻瓜式vuex语法糖kiss-vuex整理

    前言 vuex 作为 vue 框架状态数据管理模块,诞生已有些许年头,它的出现很好地解决了兄弟组件响应式状态数据通信的问题.但是,vuex 的学习是一定门槛的,同时其声明和使用方式有一些不够简洁.一般情况下,我们会使用 new Vue({store})这种方式注入 Store,在组件中使用很 mapGetters 或 mapActions 等来引入 getters 和 actions 等,但随着项目状态数据增长,你会发觉越来越难以维护,因为这些数据和方法都太过分散. 看到这里,如果你还是不懂 v

  • Vue3状态管理之Pinia的入门使用教程

    目录 Vue3 新的发展方向(来源于尤大知乎) 一.Pinia 简介与基础 1.1 Pinia 简介 1.2 Pinia 基础 二.Pinia 在Vue3-Vite中的使用 2.1 基础使用流程 2.2 state 中数据的解构访问 2.3 state 中数据的修改方式(actions和组件中) 2.4 getters 的使用 三.Pinia 数据持久化 总结 Vue3 新的发展方向(来源于尤大知乎) Vue 3 将在 2022 年 2 月 7 日 成为新的默认版本 基于 Vite 的极速构建工

  • vuex5中的Pinia插件机制

    目录 vuex5 Pinia插件机制 通过插件扩展 1.使用 2.应用 pinia和vuex的区别 vuex5 Pinia插件机制 通过插件扩展 .给每个store添加公共属性 .给stores添加新的配置 .给stores添加新的方法 .包裹重用已有方法 .改变或者取消actions .应用额外的副作用像localstorage .应用给指定的store 1.使用 import { createPinia } from 'pinia' const pinia = createPinia() (

  • Vue新一代状态管理工具Pinia的具体使用

    目录 前言 优点 安装 创建并挂载 创建store 使用store 回显与修改state 使用$patch对多条数据直接修改 使用actions 使用getters 多个store相互调用 数据持久化 安装 使用 总结 前言 Pinia是尤雨溪强烈推荐的一款Vue状态管理工具,也被认为是下一代Vuex的替代产品. 优点 去除了mutations,只有 state,getters和actions,其中actions支持了同步和异步操作 不会像Vuex那样有模块嵌套,Pinia只有store的概念,

  • Pinia进阶setup函数式写法封装到企业项目

    目录 开场 认识Pinia Pinia与Vuex代码分割机制 Pinia的常规用法 1. 安装 2. 挂载全局实例 3. 创建第一个store 4. 业务组件对store的调用 5. 良好的编程习惯 企业项目封装攻略 1. 全局注册机 重复打包问题 创建总入口 总线注册 打包解耦 2. Store组管理 场景分析 组级Store创建 单元Store 业务组件调用 效果 落幕 开场 Hello大家好,相信在座各位假如使用Vue生态开发项目情况下,对Pinia状态管理库应该有所听闻或正在使用,假如还

随机推荐