Vue开发实例(13)之axios和mockjs的安装与使用

news2025/1/24 2:14:06

作者简介

作者名:编程界明世隐
简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注,期待与您一起学习、成长、起飞!

引言

Vue是现在前端最流行的框架之一,作为前端开发人员应该要熟练的掌握它,如果你是打算学习Vue的开发流程,那么来吧,明哥带你快速上手、带你飞!
即使你并非前端开发人员,对前端的开发流程进行一定的了解也是很有必要的,谁也不确定公司以后会不会让我做前端去,做些简单的实例既不需要花费很多时间,也可以提高自己的自信和成就感,所以跟着明哥走,没有错,来吧!

导航

✪  Vue开发实例目录总索引
上一篇【12】实现动态左侧菜单导航
下一篇【14】Vue状态管理store

概述

Axios 是一个基于 promise 的 HTTP 库,类似于我们常用的 ajax。
在开发过程中,特别是前后端分离的项目,比如前端用Axios、ajax请求后端数据,后端也许当前只给了接口文档,还没有数据的返回,导致前端无法进行测试、调试,现在可以使用mock.js拦截前端ajax请求,更加方便的构造你需要的数据,大大提高前端的开发效率。

安装

这里我们来安装axios和mockjs ,我们可以在项目的目录下打开终端输入命令,也可以在IDEA的项目终端下输入命令

安装axios

npm install axios --save

在main.js全局引入axios

import axios from ‘axios’;
Vue.prototype.$axios =axios;

安装mockjs

npm install mockjs --save-dev

在src下创建文件夹mock,并创建mock.js文件,输入以下测试内容:

//引入mockjs
import Mock from 'mockjs'
//使用mockjs模拟数据
Mock.mock('/test', {
    "res":0,
    "data":
        {
            "datatime": "@datetime",//随机生成日期时间
            "weekday|1-7": 7,//随机生成1-7的数字
            "name": "@cname",//随机生成中文名字
        }
});

在main.js引入此mock.js就可以进行全局拦截axios和ajax的请求了。

import ‘./mock/mock.js’;

get请求

在之前的Main1页面上编写代码

  1. 创建按钮
 <el-button @click="getTest">get数据</el-button>
  1. 创建axios请求方法
export default {
        name: "Main1",
        methods:{
            getTest(){
                this.$axios.get("/test").then(res=>{
                    console.log(res.data)
                })
            }
        }

    }

this.$axios.get(“/test”)中this.$axios.get 表示使用get请求,“/test” 访问路径,刚好与之前mock.js定义的想吻合;
res 就是取得返回的数据集合,其中res.data就是我们定义好的返回数据。

  1. 点击按钮打印返回结果
    在这里插入图片描述

post请求

  1. 添加post请求按钮
 <el-button @click="postTest">post测试1</el-button>
  1. 编写js post代码
postTest(){
   this.$axios.post("/post/test1",{id:1}).then(res=>{
        console.log(res.data)
    })
}
  1. 在mock.js中

其中第2个参数指定为 post,如果我们用get请求则会提示404,只能用post

Mock.mock('/post/test1','post',function(param){
    console.log('传入的参数为:',param.body)
    return {
        res:1,
        msg:"success"
    }
});
  1. 测试

在这里插入图片描述

添加数据

  1. 按钮代码
<el-button @click="postAdd">add数据</el-button>
  1. 请求方法代码
postAdd(){
    this.$axios.post("/post/add",{id:1,name:'哈哈'}).then(res=>{
        console.log(res.data)
    })
}
  1. mock模拟数据
Mock.mock('/post/add','post',function(param){
    let body = JSON.parse(param.body) // 获取请求参数
    let id = parseInt(body.id)
    let flag = true

    for (let item of userList) {
        if (item.id === id) flag = false // 判断id是否已经存在
    }

    // 如果id不存在
    if (flag) {
        userList.push(
            {
                name: body.name,
                id
            }
        )
        return {
            userList,
            res: 0,
            msg: '添加成功'
        }
    } else{
            return {
                userList,
                res: 1,
                msg: '添加失败'
            }
        }
});
  1. 测试

id 1是存在的,所以添加失败

在这里插入图片描述

id改成4,这个id不存在,所以添加成功
在这里插入图片描述

修改

  1. 按钮代码
<el-button @click="postMod">mod数据</el-button>
  1. 请求代码
postMod(){
    this.$axios.post("/post/mod",{name:'哈哈',id:3}).then(res=>{
        console.log(res.data)
    })
}
  1. 模拟数据
Mock.mock('/post/mod','post',function(param){
    let body = JSON.parse(param.body) // 获取请求参数
    let id = parseInt(body.id)
    let flag = false,index=0;

    for (let i in userList) {
        if (userList[i].id === id) {
            flag = true // 判断id是否已经存在,存在返回true
            index = i//对应数组的下标
        }
    }

    // 如果id存在则修改
    if (flag) {
        userList[index] = body
        return {
            userList,
            res: 0,
            msg: '修改成功'
        }
    } else{
        return {
            userList,
            res: 1,
            msg: '修改失败'
        }
    }
});
  1. 测试

id存在则操作成功
在这里插入图片描述
将id改成4,因id为4 不存在,则操作失败
在这里插入图片描述

删除数据

  1. 按钮代码
<el-button @click="postDel">del数据</el-button>
  1. 请求代码
postDel(){
    this.$axios.post("/post/del",{id:1}).then(res=>{
        console.log(res.data)
    })
}
  1. 模拟数据代码
Mock.mock('/post/del','post',function(param){
    let body = JSON.parse(param.body) // 获取请求参数
    let id = parseInt(body.id)
    let flag = false,index=0;

    for (let i in userList) {
        if (userList[i].id === id) {
            flag = true // 判断id是否已经存在,存在返回true
            index = i//对应数组的下标
        }
    }

    // 如果id存在则删除
    if (flag) {
        userList.splice(index,1);
        return {
            userList,
            res: 0,
            msg: '删除成功'
        }
    } else{
        return {
            userList,
            res: 1,
            msg: '删除失败'
        }
    }
});
  1. 测试

id 1 删除成功

在这里插入图片描述

id 改为4,删除失败

在这里插入图片描述

查询

  1. 按钮代码

  2. 请求代码,分别是没有参数的查询全部,有id参数的根据id来查询

postQuery(){
    this.$axios.post("/post/query",{}).then(res=>{
        console.log(res.data)
    })
}
postQuery(){
    this.$axios.post("/post/query",{id:1}).then(res=>{
        console.log(res.data)
    })
}
  1. 模拟数据代码
Mock.mock('/post/query','post',function(param){
    let body = JSON.parse(param.body) // 获取请求参数
    let id = parseInt(body.id)

    if(!id){//如果id不存在,则直接返回全部
        return {
            userList,
            res: 0,
            msg: '查询成功'
        }
    }
    //id
    for (let item of userList) {
        if (item.id === id) {
            return {
                userList: [item],
                res: 0,
                msg: '查询成功'
            }
        }
    }

    // 如果id不存在则返回失败
    return {
        userList:[],
        res: 1,
        msg: '查询失败'
    }
});
  1. 测试

id为1 查询成功

在这里插入图片描述

id为4 查询失败

在这里插入图片描述

id没有,查询全部

在这里插入图片描述

小结

这节总结了“axios和mockjs的安装与使用”,希望能对大家有所帮助,请各位小伙伴帮忙 【点赞】+【收藏】+ 【评论区打卡】, 如果有兴趣跟小明哥一起学习Java和前端的,【关注一波】不迷路哦。
请到文章下方帮忙【一键三连】谢谢哈!

在这里插入图片描述

导航

✪  Vue开发实例目录总索引
上一篇【12】实现动态左侧菜单导航
下一篇【14】Vue状态管理store

热门专栏推荐

【1】Java小游戏(俄罗斯方块、植物大战僵尸等)
【2】JavaWeb项目实战(图书管理、宿舍管理等)
【3】JavaScript精彩实例(飞机大战、验证码等)
【4】Java小白入门200例
【5】从零学Java、趣学Java
【6】IDEA从零到精通
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/408014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3中 内置组件 Teleport 详解

1. 基本概念 1.1 简单理解 不管是 Vue2 还是 Vue3 中都有内置组件的存在&#xff0c;如 component 内置组件、transition 内置组件等等。内置组件就是官方给我们封装的全局组件&#xff0c;我们直接拿来用就可以了。 在 Vue3 中新增了 Teleport 内置组件&#xff0c;先来看下…

【JavaScript-数组全家福】

目录 前言 数组 1.创建 new Array数组 2.检测是否为数组 1.使用instanceof检测是否为数组 2.使用Array.isArray()来检测 3.添加删除数组方法 4.筛选数组 5.数组排序 6.数组索引方法 7.数组去重 8.数组转字符串 写在最后 前言 博主是&#x1f466;一个帅气的boy&#…

前端案例:飞机大战( js+dom 操作,代码完整,附图片素材)

目录 一、案例效果 二、实现思路 三、完整代码详细注释 四、涉及要点 五、案例素材 一、案例效果 二、实现思路 创建游戏背景板&#xff1b;创建我方战机&#xff0c;鼠标进入游戏面板后其随鼠标轨迹运动&#xff1b; onmousemove创建子弹&#xff0c;让子弹周期性的在战…

Grafana alert预警+钉钉通知

1 Grafana alert预警 如下图所示&#xff0c;主要是前3步&#xff0c;设置alert rules、contact points 、notification policies。alert rules主要设置触发警告的规则&#xff1b;contact points设置通过什么发送预警&#xff0c;如钉钉&#xff1b;notification policies 将…

鼠标事件、键盘事件,你听过嘛?

&#x1f4dc;个人简介 ⭐️个人主页&#xff1a;微风洋洋&#x1f64b;‍♂️ &#x1f351;博客领域&#xff1a;编程基础,后端 &#x1f345;写作风格&#xff1a;干货,干货,还是tmd的干货 &#x1f338;精选专栏&#xff1a;【JavaScript】 &#x1f680;支持洋锅&#xff…

Chrome-谷歌浏览器多开教程

Chrome谷歌浏览器多开教程在我们的日常生活中&#xff0c;我们常常在某一时刻需要在进行多个账号的查看&#xff0c;例如在跨境电商时&#xff0c;我们常常需要开多各店铺页面&#xff0c;又或者&#xff0c;我们在玩游戏时&#xff0c;需要开多个账号同时进行运作&#xff0c;…

一文通透从输入URL到页面渲染的全过程----高频面试

一文通透从输入URL到页面渲染的全过程----高频面试 喜欢大海 喜欢夕阳 写下便是永恒 文章目录一文通透从输入URL到页面渲染的全过程----高频面试重温进程与线程什么是进程什么是线程进程和线程的区别多进程和多线程JS为什么是单线程浏览器相关浏览器是多进程的浏览器包含哪些进…

jeecg-boot首页加载速度优化全过程

优化结果 前端和后端部署在轻量服务器: 以下结果都是三次强刷得到的 优化前: 优化后: 优化方案 开启Nginx压缩 方案来自于:jeecg官方文档 作用:通过nginx内置的压缩策略来压缩静态资源&#xff0c;提升资源请求速度 在nginx.conf 的 http 中加入以下片断: # gzip …

【微信小程序 | 实战开发】常用的视图容器类组件介绍和使用(1)

个人名片: 🐼作者简介:一名大二在校生,喜欢编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️ 零基础学Java——小白入门必备重识C语言——复习回顾

component lists rendered with v-for should have explicit keys

component lists rendered with v-for should have explicit keys 发现问题 关键报错 (Emitted value instead of an instance of Error) : component lists rendered with v-for should have explicit keys. See https://vuejs.org/guide/list.html#key for more info. 具体…

VUE之Element-ui文件上传详解

引言 对于文件上传&#xff0c;在开发主要涉及到以下两个方面&#xff1a; 单个文件上传和表单一起实现上传&#xff08;这种情况一般都是文件上传之后&#xff0c;后端返回保存在服务器的文件名&#xff0c;最后和我们的表单一起上传&#xff09; 单文件上传 element-ui中…

Cesium加载离线地图和离线地形

文章目录 前言一、Cesium加载离线地图 1.1 下载数据2.2 数据处理2.3 地图发布2.4下载速度改进 二、Cesium加载离线地形 2.1 下载数据2.2 数据处理2.3 地形发布2.4 遇到的问题 前言 直接把地图数据切片&#xff0c;然后通过nginx以静态服务方式发布。 使用工具&#xff1a;…

this.$emit使用方法【前端技术】

this.$emit()主要用于子组件向父组件传值。 下面就给大家举一个实际开发中使用到的案例。 需求&#xff1a; 点击关联项目&#xff0c;弹出关联项目数据进行选择一条数据&#xff0c;点击确定&#xff0c;项目编号会回显到关联项目中。 1新增页面 2 新增页面中点击关联项目弹出…

vue3全局自定义指令实现按钮权限控制

1. 文档介绍的全局自定义指令 在Vue的模板语法中我们除了使用&#xff1a;v-show、v-for、v-model等&#xff0c;Vue其实 也允许我们来自定义自己的指令。 1&#xff09;注意&#xff0c;在 Vue 中&#xff0c;代码复用和抽象的主要形式是组件。 2&#xff09;然而&#xff0c…

HTML+CSS实现搜索框

HTMLCSS实现搜索框&#xff1a; 需求分析&#xff1a; 1、输入框焦点事件 onfocus:成为焦点, 点击输入框的时候&#xff0c;出现闪烁光标&#xff0c;此时可以输入内容。 onblur :失去焦点, 点击页面空白区域&#xff0c;光标消失。此时不可以输入内容。 2、获取元素 3、…

vite配置@别名,以及如何让vscode智能提示路经

vite配置别名 vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue// 配置别名import { resolve } from "path"; // https://vitejs.dev/config/ export default defineConfig({plugins: [vue()],// ↓解析配置resolve: {// ↓路…

HTML基础之form表单

目录 一&#xff1a;表单属性 1 name 属性 2 action属性 3 method属性 4 target属性 5 enctype属性 二&#xff1a;表单对象 1 input标签 2 多行文本textarea 3 下拉列表select 4 表单控件&#xff08;元素&#xff09;button 5 表单控件&#xff08;元素&#xff…

Vuex持久化插件(vuex-persistedstate)

为什么使用持久化 目的: 让在vuex中管理的状态数据同时储存在本地。可免去自己储存的环节。 在开发的过程中&#xff0c;像用户信息&#xff08;名字&#xff0c;头像&#xff0c;token&#xff09;需要vuex中储存且需要本地储存再例如&#xff0c;购物车如果需要未登录状态下…

Router-view

我们都知道&#xff0c;路由指的是组件和路径的一种映射关系。Router-view也被称为路由的出口,今天我们就探讨下如何去使用路由出口。 也就是: 路径--------------------------------------------------------------->页面 可以把router-view理解成一类代码存放的位置。 …

vue3项目中使用three.js

vue3项目中使用three.js前言一、three.js是什么&#xff1f;二、vue3中下载与安装three.js三、操作步骤1.创建场景2.创建物体3.添加光源4.添加相机5.开始渲染四、myThree.vue源代码五、效果图1.单个模型2.多个模型总结前言 在vue3项目中&#xff0c;通过three.js使用了一段短小…