Vue(Vue2+Vue3)——56.搭建Vuex开发环境

简介: Vue(Vue2+Vue3)——56.搭建Vuex开发环境

56 搭建Vuex开发环境


56.1 安装Vuex


安装之前需要了解一个版本问题,在vue2中,要用vuex的3版本,在vue3中,要用vuex的4版本,要严格遵循这个版本要求,不然就会出现各种意想不到的问题,例如下方安装报错,就算因为版本问题

安装的方式也有好几种,我这里采用的是npm安装

npm

npm install vuex@next --save

Yarn

yarn add vuex@next --save

我这里用的是vue2,所以就安装vuex的3版本,打开终端,输入:

vue_test>npm i vuex@3


56.2 使用Vuex


安装完成之后,就可以import和use了,这里Vuex的v大小写都可以,官网文档是大写的,非要小写也没错,只是一个命名的问题

// 引入Vuex
import Vuex from 'vuex'
// 使用Vuex
Vue.use(Vuex)


56.3 使用虚拟store


到了use完Vuex这一步后,然后创建vm或者vc的时候就可以传入store这个配置项了

这样就实现了让每一个vc实例都有一个store对象了,但是现在的store里面的值都是假的,所以现在要创建(封装)真实的store


56.4 创建store


想创建store有两种做法


第一种做法


可以在项目的src目录创建一个文件夹叫做vuex,然后在里面新建一个store.js,这样别人一看就知道用到了vuex技术,并且store在这里创建的,虽然这种方式清晰明了,但是不是官方推荐的


第二种做法


在项目的src目录创建一个叫store的文件夹,并且创建index.js,虽然没有体现vuex,但是在src里面看到store,就相当于看到了vuex,这种方式也是官网推荐的

这两种方式都行,但是官网推荐的是第二种做种,所以这里我采用的是第二种做法


56.5 暴露(导出)store


在index.js写入相关代码

// 该文件用于创建Vuex中最为核心的store
// 引入Vuex
import Vuex from 'vuex'
// 准备actions 用于相应组件中的动作
const actions={}
// 准备mutations 用于操作数据(state)
const mutations={}
// 准备state 用于存储数据
const state={}
// 创建并暴露(导出)store 
export default new Vuex.Store({
    // 准备store里面的三大元素 这里key和value重名,可以使用简写形式 比如:action,mutations,state 这里我不想采用简写形式
    actions:actions,
    mutations:mutations,
    state:state
})


56.6 引入并使用真实store


既然真实的store以及准备完了,我们就可以引入真实的store并且替换掉上面我们写的假的store了

这里store触发了简写形式,但是我没有省略,个人不习惯这种简写

这样一个真实的store就被创建配置完成并引用了,vc或者vm实例身上都有一个store对象了


56.7 解决脚手架解析import语句的问题


看似基本工作都做完了,但是查看浏览器报错了,看似是一个前后调用问题,实际上是一个脚手架解析import语句的问题

[vuex] must call Vue.use(Vuex) before creating a store instance.

这时候我们可以换一种思路,把use写道index.js里面,让main.js只需要引入以及准备好的store

这时候再次查看store,发现错误消息并且每个vc或者vm都有一个真实的store

并且看到的dispatch和commit等相关api,这就意味着可以和vuex进行操作了

到这就完成了搭建Vuex的开发环境了,也就是意味着可以使用vuex了  代码如下:

index.js

// 该文件用于创建Vuex中最为核心的store
// 引入Vue
import Vue from 'vue'
// 引入Vuex
import Vuex from 'vuex'
// 使用Vuex
Vue.use(Vuex)
// 准备actions 用于相应组件中的动作
const actions={}
// 准备mutations 用于操作数据(state)
const mutations={}
// 准备state 用于存储数据
const state={
    sum:0 //总和
}
// 创建并暴露(导出)store 
export default new Vuex.Store({
    // 准备store里面的三大元素 这里key和value重名,可以使用简写形式 比如:action,mutations,state 这里我不想采用简写形式
    actions:actions,
    mutations:mutations,
    state:state
})

main.js

// 引入Vue
import Vue from 'vue'
// 引入App
import App from './App.vue'
// 引入store
import store from './store/index'
// 关闭Vue的生产提示
Vue.config.productionTip=false
// 创建vm 
const vm=new Vue({
    el:'#app',
    render:h=>h(App),
    store:store,
    beforeCreate(){
        Vue.prototype.$bus=this
    }
})


56.8 搭建vuex环境总结


1 创建文件:src/store/index.js

//引入Vue核心库
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用Vuex插件
Vue.use(Vuex)
//准备actions对象——响应组件中用户的动作
const actions = {}
//准备mutations对象——修改state中的数据
const mutations = {}
//准备state对象——保存具体的数据
const state = {}
//创建并暴露store
export default new Vuex.Store({
        actions,
        mutations,
        state
})

2 在main.js中创建vm时传入store配置项

......
//引入store
import store from './store'
......
//创建vm
new Vue({
        el:'#app',
        render: h => h(App),
        store
})
相关文章
|
16天前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
136 2
|
14天前
|
开发工具 iOS开发 MacOS
基于Vite7.1+Vue3+Pinia3+ArcoDesign网页版webos后台模板
最新版研发vite7+vue3.5+pinia3+arco-design仿macos/windows风格网页版OS系统Vite-Vue3-WebOS。
156 11
|
2月前
|
缓存 前端开发 大数据
虚拟列表在Vue3中的具体应用场景有哪些?
虚拟列表在 Vue3 中通过仅渲染可视区域内容,显著提升大数据列表性能,适用于 ERP 表格、聊天界面、社交媒体、阅读器、日历及树形结构等场景,结合 `vue-virtual-scroller` 等工具可实现高效滚动与交互体验。
273 1
|
2月前
|
缓存 JavaScript UED
除了循环引用,Vue3还有哪些常见的性能优化技巧?
除了循环引用,Vue3还有哪些常见的性能优化技巧?
149 0
|
3月前
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
112 0
|
4月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
573 0
|
6月前
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
770 4
|
4月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
5月前
|
JavaScript 数据可视化 前端开发
基于 Vue 与 D3 的可拖拽拓扑图技术方案及应用案例解析
本文介绍了基于Vue和D3实现可拖拽拓扑图的技术方案与应用实例。通过Vue构建用户界面和交互逻辑,结合D3强大的数据可视化能力,实现了力导向布局、节点拖拽、交互事件等功能。文章详细讲解了数据模型设计、拖拽功能实现、组件封装及高级扩展(如节点类型定制、连接样式优化等),并提供了性能优化方案以应对大数据量场景。最终,展示了基础网络拓扑、实时更新拓扑等应用实例,为开发者提供了一套完整的实现思路和实践经验。
548 77
|
3月前
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
246 1