当前位置: 首页 > wzjs >正文

企业网站建设管理视频站长之家网站模板

企业网站建设管理视频,站长之家网站模板,徐州建站程序,设计一个软件需要多少钱总结对比表 对比项VuexPiniaAPI 设计区分 mutations/actions仅 state/actions/getters模块化嵌套式配置独立 Store,按需组合TypeScript需手动声明类型原生自动推断代码简洁性冗余(需 commit/dispatch)直接调用方法推荐场景Vue 2 升级项目/严…

总结对比表

对比项VuexPinia
API 设计区分 mutations/actionsstate/actions/getters
模块化嵌套式配置独立 Store,按需组合
TypeScript需手动声明类型原生自动推断
代码简洁性冗余(需 commit/dispatch直接调用方法
推荐场景Vue 2 升级项目/严格规范Vue 3 新项目/灵活简洁

Vue 3 中 Pinia 和 Vuex 的核心区别及代码对比

1. 核心 API 对比

Vuex 示例
// store.js
import { createStore } from 'vuex';export default createStore({state: {count: 0},mutations: {increment(state) {state.count++; // 必须通过 mutations 同步修改}},actions: {incrementAsync({ commit }) {setTimeout(() => {commit('increment'); // 异步操作需调用 commit}, 1000);}},getters: {doubleCount: (state) => state.count * 2}
});
Pinia 示例
// counterStore.js
import { defineStore } from 'pinia';export const useCounterStore = defineStore('counter', {state: () => ({ count: 0 }),actions: {increment() {this.count++; // 直接通过 this 修改状态},async incrementAsync() {setTimeout(() => {this.increment(); // 支持异步操作}, 1000);}},getters: {doubleCount: (state) => state.count * 2}
});

关键差异

  • Pinia 移除 mutations,允许在 actions 中直接修改状态(同步/异步均可)。
  • Vuex 强制区分 mutations(同步)和 actions(异步)。

2. 模块化对比

Vuex 模块化(嵌套式)
// userModule.js
export default {state: { name: 'User' },mutations: { ... }
};// store.js
import userModule from './userModule';export default createStore({modules: {user: userModule // 嵌套式模块}
});
Pinia 模块化(扁平化)
// userStore.js
export const useUserStore = defineStore('user', {state: () => ({ name: 'User' })
});// productStore.js
export const useProductStore = defineStore('product', { ... });

关键差异

  • Vuex 需在单一 Store 中嵌套模块;Pinia 支持独立定义 Store,按需引入。

3. 组件中使用对比

Vuex 组件调用
<template><div>{{ $store.state.count }}</div><button @click="$store.commit('increment')">同步 +1</button><button @click="$store.dispatch('incrementAsync')">异步 +1</button>
</template>
Pinia 组件调用
<template><div>{{ counterStore.count }}</div><button @click="counterStore.increment()">同步 +1</button><button @click="counterStore.incrementAsync()">异步 +1</button>
</template><script setup>
import { useCounterStore } from './counterStore';
const counterStore = useCounterStore();
</script>

关键差异

  • Pinia 通过 Store 实例直接调用方法,代码更简洁;Vuex 需通过 commit/dispatch

4. TypeScript 支持对比

Vuex 类型声明(手动)
// 需手动定义类型
interface State {count: number;
}const store = createStore<State>({state: { count: 0 },mutations: {increment(state) {state.count++; // 需手动确保类型匹配}}
});
Pinia 类型推断(自动)
// 自动推断类型
const counterStore = useCounterStore();
counterStore.increment(); // 方法名和参数自动提示
counterStore.count++;     // 直接修改状态(需配置允许)

关键差异

  • Pinia 原生支持 TypeScript 类型推断;Vuex 需手动配置类型。

5. 响应式解构对比

Pinia 的响应式解构
import { storeToRefs } from 'pinia';const counterStore = useCounterStore();
const { count, doubleCount } = storeToRefs(counterStore); // 解构后仍保持响应式

Vuex 的局限性

  • Vuex 解构 $store.state.count 会失去响应性,需通过 computed 包装。

总结对比表

对比项VuexPinia
API 设计区分 mutations/actionsstate/actions/getters
模块化嵌套式配置独立 Store,按需组合
TypeScript需手动声明类型原生自动推断
代码简洁性冗余(需 commit/dispatch直接调用方法
推荐场景Vue 2 升级项目/严格规范Vue 3 新项目/灵活简洁
http://www.dtcms.com/wzjs/25970.html

相关文章:

  • c 网站开发案例源码百度广告联盟平台的使用知识
  • 做网站搞笑口号怎样做市场营销策划
  • 微信小程序开发文档下载海城seo网站排名优化推广
  • 哈尔滨网站推广公司新闻投稿
  • 临河 网站建设网站seo视频
  • 微信首页制作代码宁宁网seo
  • 国外精彩网站网页制作公司排名
  • vs2015做简单网站上海关键词优化外包
  • 长沙市网站制作哪家好北京优化seo排名优化
  • 哪里有门户网站开发公司如何获取永久免费域名
  • 那些网站是做俄罗斯鞋子长春网络科技公司排名
  • 个人网页的内容长沙优化网站推广
  • 合肥 做网站的公司网站制作
  • 那个网站开发三味注册城乡规划师
  • 网站优化方式站长分析工具
  • 好的网站建设平台网站怎么快速收录
  • 儒枫网网站建设百度手机助手下载
  • 整形美容医院手机网站wap模板农村电商平台
  • 免费详情页模板网站网站安全检测平台
  • 做镜像网站利润广东疫情最新通报
  • 购物网站的建设东莞seo优化排名
  • 做网站主要学什么软件百度安装下载
  • 微信分享接口网站开发 php中国十大互联网公司
  • 合肥做双语外贸网站打开百度官网
  • 网站制作合作网络优化大师下载
  • wordpress密码记录品牌网络seo方案外包
  • 外贸网站优化服务新闻稿代写
  • 合肥网站建设王道下拉強嘉定区整站seo十大排名
  • 网站开发注册流程以及收费b站24小时自助下单平台网站
  • 淄博桓台学校网站建设定制2023上海又出现疫情了