vuex闭环请求

本文档详细介绍了如何配置Vue.js开发环境,包括安装node.js、设置vue-cli、创建项目并配置vue.config.js。此外,还展示了如何使用axios进行接口请求,创建util和服务API文件,实现store模块的交互,以及在Vue组件中调用store方法发送post请求。通过这些步骤,读者可以了解并实践Vue项目的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先构建环境

  1. 首先项目配置环境脚手架-vue开发环境

    1. 安装node.js

    2. 下载地址:http://nodejs.org/en/download/

    3. 注意可以安装淘宝镜像

      npm install -g cnpm --registry=http://registry.npm.taobao.org
      
      1. 如果需要卸载已经安装了的旧版本的vue-cli(1.x或2.x)可以使用如下代码
      npm uninstall vue-cli -g
      
      1. vue-cli 4.0 开发环境 脚手架,vue3.0 和vue4.0使用方式是相同的
      2. 全局下载安装脚手架—只需要执行一次,今后不需要再次下载
      cnpm install -g @vue/cli
      可以使用   vue --version 查看版本
      
      1. 切换到需要创建的路径下
      2. vue create 你的项目名
      3. 选择最后一项自定义配置Manually select features并回车后,使用空格选择RouterVuex,接着一路回车下去即可。
      4. 接着cd到项目下 npm run serve此方式是启动项目,注意如果想要更改启动的方式,可以进入 package.json文件夹下,修改"serve": "vue-cli-service serve",可以将serve修改为其他的启动方式即可。
      5. 至此配置环境已经完成。开始进行项目的编写步骤如下第2步
  2. 配置vue.config.js

module.exports={
        //给文件夹起别名
    configureWebpack:{
        resolve:{
            alias:{
            // "别名":"对应的文件夹"
            "c":"@/components",
            "u":"@/util",
            "a":"@/api"
            }
        },
    },
    devServer:{
        open:true, //设置自动开启
        port:8888,//修改端口,修改完配置文件要记得重启
    
// 当需要进行跨越的时候可以设置如下的此代码

	proxy: {
            '/api': {
              target: 'http://localhost:3000/', //对应自己的接口
              changeOrigin: true,
              ws: true,
              pathRewrite: {
                '^/api': ''
              }}
             }

}
}
  1. 创建文件util文件并新建文件 servicejs文件
import axios from "axios"
// 创建axios 赋值给常量service 
const service = axios.create();

// 添加请求拦截器(Interceptors)
service.interceptors.request.use(function (config) {
    // 发送请求之前做写什么
    return config;
  }, function (error) {
    // 请求错误的时候做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
service.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  });
  export default service
  1. 新建api文件夹并且创建postapi.js
//注意此处的service不需要进行解构
import service from "@/util/service"
export function postlink(url,data){
    return new Promise((resolve,reject)=>{
        service.request({
            url,
            method:"POST",
            data
        }).then(ok=>{
            resolve(ok)
        }).catch(err=>{
            reject(err)
        })
    })
}

下载axios cnpm install --save axios
5. 写store文件–新建modules文件夹,并且新建maboult.js文件

import {postlink} from "@/api/postapi.js"
export let mabout={
    state:{

    },
    mutations:{

    },
    actions:{
        postaxios(context,payload){
            postlink("/api/ceshi/post",payload).then(ok=>{
                console.log(ok);
            })
        }
    }
}
  1. 接着在store的index.js文件下进行引用使用
import Vue from 'vue'
import Vuex from 'vuex'
import {mabout} from "@/store/modules/mabout.js"
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
    mabout
  }
})

  1. 可以在需要调用的文件下进行使用store中的postaxios方法
<template>
  <div class="about">
    <h1>post请求接口</h1>
    <input type="text" v-model="inputval">
    <button @click="fun()">点击我发送请求</button>
  </div>
</template>
<script>
export default {
  data(){
     return {
       inputval:""
     }
  },
  methods:{
    fun(){
      let usp=new URLSearchParams
      //posttext 是后端需要的数据  this.inputval是前端穿给后端的值
      usp.append("posttext",this.inputval)
      //postaxios 是store实例中anctions的方法
      this.$store.dispatch("postaxios",usp)
    }
  }
}
</script>

此时actions方法中就会打印到后台请求到的数据

    actions:{
        postaxios(context,payload){
            postlink("/api/ceshi/post",payload).then(ok=>{
                console.log(ok);
            })
        }
    }

在这里插入图片描述
8. 新建文件vue文件进行布局等设置后

<template>
  <div class="about">
    <h1>post请求接口</h1>
    <input type="text" v-model="inputval">-----{{this.$store.state.mabout.text}}
    <button @click="fun()">点击我发送请求</button>

  </div>
</template>
<script>
export default {
  data(){
     return {
       inputval:""
     }
  },
  methods:{
    fun(){
      let usp=new URLSearchParams
      //posttext 是后端需要的数据  this.inputval是前端穿给后端的值
      usp.append("posttext",this.inputval)
      //postaxios 是store实例中anctions的方法
      this.$store.dispatch("postaxios",usp)
    }
  }
}
</script>

注意在调用的时候应使用的是this.$store.state.mabout.text
9. 重新设置闭环的文件 在mabout.js

import {postlink} from "@/api/postapi.js"
export let mabout={
    state:{
        text:""
    },
    mutations:{
        uptext(state,payload){
            state.text=payload
        }
    },
    actions:{
        postaxios(context,payload){
            postlink("/api/ceshi/post",payload).then(ok=>{
                console.log(ok.data.data.posttext);
                //调用commit  posttext都是后端需要的数据
                context.commit("uptext",ok.data.data.posttext)
            })
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值