背景:Vue 版本 2.7 ,2 到 3 人的小项目,不使用 composition api ,不使用 SSR
目的:只是想要响应式的全局变量
关于 Vuex ,一个常见的说法是"大项目更需要,小项目不必强行用",我的问题是:
1.Pinia 仍然适用这个说法吗?还是说 Pinia 因为更简单所以无脑上?
2.如果嫌啰嗦不想用 Vuex 的话,可以用什么?很多地方包括 Vue 2 的文档提到 Event Bus 模式,但我也看到很多博客和论坛包括 Vue 的 Core Team 开发者都强烈反对这一模式。其中一个原因是说,Event Bus 没有一个中心化的 state ,而是用事件的发布 /订阅来同步数据,因此难以维护。
问题来了,Event Bus 为什么不用中心化的 state ?或者说,为什么不是 Data Bus 而是 Event Bus ?我的意思是:
// bus.js
const bus = new Vue({
data () {
count: 1
}
})
Vue.prototype.$bus = bus
// App.vue
<template>
<div>
{{ $bus.count }}
<button @click="$bus.count++">Add</button>
</div>
</template>
这样写我试了一下是可以的,数据也是响应式的,我觉得似乎是一个很自然的想法?但是为什么搜不到任何相关的讨论,甚至不知道这个模式有没有名字(类似 Event Bus )?还是说有什么我没看到的原因导致不能这样写?
问的有点乱,简单说就是用一个 Vue 实例来充当 Store 是不是反模式?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.