描述
最近又要开始做新项目了,H5本来想用vue3
,但是通过电商H5数据埋点统计了一下,发现使用ios9.x
还是有一部分人,vue3会存在兼容性问题,为了保证所有用户都能正常使用,只能放弃vue3,继续使用vue2;
vue2目前的最新版本为v2.7.14
,而且vue从v2.7
开始,内置支持了组合式 API
,所以基本上可以无障碍使用vue3的特性与语法;
vue2.7.x中使用pinia
项目的总体规划为:vite + vue2.7 + vueRouter3 + pinia
,先把目前我正在使用的版本都发出来(目前时间2023-03-13
):
"vite": "^4.1.4"
"vue": "^2.7.14"
"vue-router": "3.5.4"
"pinia": "^2.0.33"
1 2 3 4 5 6
|
import { createPinia } from 'pinia';
const pinia = createPinia(); export default pinia;
|
1 2 3 4 5 6 7 8 9 10 11
|
import { defineStore } from 'pinia' export const userStore = defineStore({ id: 'counter', state: () => ({ userId: 0 }), actions: { } })
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
import Vue from 'vue' import { PiniaVuePlugin } from 'pinia' import pinia from '@/store/store.js' import App from '@/App.vue'
Vue.use(PiniaVuePlugin)
new Vue({ router, pinia, render: (h) => h(App), }).$mount('#app')
|
1 2 3 4 5 6 7
|
import { useUserStore } from '@/stores/user.js' const userStore = useUserStore()
|
注意
1 2 3 4 5 6 7 8 9 10 11
|
import router from '@/router' import { useUserStore } from '@/stores/user.js' import pinia from '@/store/store.js'
router.beforeEach((to, from, next) => { const userStore = useUserStore(pinia) const userId = userStore.userId })
|
总结
vue2中使用pinia和vue3中的写法有区别,而且pinia的官方文档并没有具体写在vue2.7中怎么使用,所以按照本文的详细步骤来写就不会出错。