vuex准备

1.vuex创建

因为 Element-ui 基于Vue 2.0,所以版本选择2.0版本

1.1创建vuex命令

在小黑框中输入:vue create 项目名

1.2 版本选择

在这里插入图片描述

2.vuex使用前配置

2.1 查看运行方式

在这里插入图片描述

serve就是 npm run serve
dev就是 npm run dev

2.2 安装配件

安装router

npm install -s vue-router@3

安装请求、element组件

npm install -s axios vuex@3 element-ui

安装拦截器所依赖的文件

npm install -s core-js
2.3 配置文件
2.3.1 配置 main.js文件
import Vue from 'vue'
import App from './App.vue'
import router from './router'

Vue.config.productionTip = false

import ElementUI from 'element-ui'
Vue.use(ElementUI)
import 'element-ui/lib/theme-chalk/index.css'

new Vue({
  router,
  render: h => h(App),
}).$mount('#app')
2.3.2 配置api.js文件

在src问价夹下创一个common文件夹,创建api.js文件

import axios from "axios";

//基础配置
axios.defaults.baseURL = "http://127.0.0.1:8000/"
axios.defaults.withCredentials = true  //请求携带cookie
axios.defaults.headers['X-Requested-With'] = "XMLHttpRequest"  //构造异步请求
axios.defaults.headers.post["Content-Type"] = "application/json"

// //全局请求拦截器
axios.interceptors.request.use(
    (config)=>{
        console.log("请求的配置:",config)
        //配置请求头配置到django
        config.headers.Authorization = localStorage.token
        config.headers.author = "laufing"
        return config
    }, 
    (error)=>{
        console.log("请求错误:",error)
        return Promise.reject()
    }
    
)


//全局相应拦截器
axios.interceptors.response.use(
    (response)=>{
        console.log("拦截响应:",response)

        return response
    }, 
    (error)=>{
        console.log("响应错误:",error)
        return Promise.reject()
    }
    
)

export default axios
2.3.3 配置App.vue文件

在这里插入图片描述

2.3.4配置路由
import Vue from "vue"
import VueRouter from "vue-router"

Vue.use(VueRouter)

import HomeView from '../components/HomeView.vue'
import IndexView from '../components/IndexView.vue'
import StaffView from '../components/StaffView.vue'
import RegView from '../components/RegView.vue'
import LoginView from '../components/LoginView.vue'

//const 定义常量
const routes = [
    {
        path:'/',
        component:HomeView
    },
    {
        path:'/index',
        component:IndexView,
        children: [
            {
                path: '/index/staff',
                component:StaffView
            }
        ]
    },
    {
        path:'/reg',
        component:RegView
    },
    {
        path:'/login',
        component:LoginView
    }

]

//把路由暴露出去,以便其他访问
const router = new VueRouter({
    routes,
})

export default router


### Vuex 配置方法与示例 VuexVue.js 的状态管理库,用于集中存储和管理应用的状态。以下是关于如何配置 Vuex 的详细说明以及具体示例。 #### 1. 安装 Vuex 在使用 Vuex 前,需先安装它。可以通过 npm 或 yarn 进行安装: ```bash npm install vuex --save ``` 或者 ```bash yarn add vuex ``` #### 2. 初始化 Vuex 并注册到 Vue 实例中 通过 `Vue.use()` 方法将 Vuex 注册为插件,并创建一个新的 Vuex Store 对象[^1]。 ```javascript import Vue from 'vue'; import Vuex from 'vuex'; // 使用 Vuex 插件 Vue.use(Vuex); // 创建一个简单的 Vuex Store const store = new Vuex.Store({ state: { count: 0, }, mutations: { increment(state) { state.count++; }, }, }); export default store; ``` #### 3.Vue 应用中引入并挂载 Store 在项目的入口文件(通常是 main.js)中引入刚刚创建的 Store,并将其挂载至 Vue 实例中[^1]。 ```javascript import Vue from 'vue'; import App from './App.vue'; import store from './store'; // 引入 Store 文件 new Vue({ el: '#app', render: h => h(App), store, // 挂载 Store 到 Vue 实例 }); ``` #### 4. 使用模块化方式扩展 Store 功能 当项目复杂度增加时,可以采用模块化的形式来组织 Store 中的数据逻辑[^2]。例如,在不同的模块文件中定义各自的状态、mutations 和 actions,再统一引入到主 Store 文件中。 **form.js** ```javascript const form = { state: () => ({ name: '', }), mutations: { setName(state, payload) { state.name = payload; }, }, }; export default form; ``` **user.js** ```javascript const user = { state: () => ({ isLoggedIn: false, }), mutations: { login(state) { state.isLoggedIn = true; }, }, }; export default user; ``` **index.js (Store 主文件)** ```javascript import Vue from 'vue'; import Vuex from 'vuex'; import form from './modules/form'; import user from './modules/user'; import getters from './getters'; Vue.use(Vuex); const store = new Vuex.Store({ modules: { form, user, }, getters, }); export default store; ``` #### 5. 在组件中访问 Vuex 数据 可以在任何 Vue 组件中通过 `$store` 访问 Vuex 存储中的数据[^4]。 **count.vue** ```html <template> <div> <p>{{ msg }}</p> <p>Count Value: {{ $store.state.count }}</p> <button @click="increment">Increment</button> </div> </template> <script> export default { data() { return { msg: 'Welcome to Vuex Example!', }; }, methods: { increment() { this.$store.commit('increment'); }, }, }; </script> ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值