目录

  • 1 初识Vue.js
    • 1.1 Vue简介
    • 1.2 Vue开发环境
    • 1.3 Vue的初使用
  • 2 Vue.js 开发基础
    • 2.1 单文件组件
    • 2.2 数据绑定
    • 2.3 指令
    • 2.4 事件对象和事件修饰符
    • 2.5 计算属性和侦听器
    • 2.6 样式绑定
    • 2.7 案例:购物车模块
    • 2.8 案例:学习计划表
  • 3 组件基础(上)
    • 3.1 构建工具Vite
    • 3.2 选项式API和组合式API
    • 3.3 组合式编程
    • 3.4 生命周期
    • 3.5 组件的注册与引用
    • 3.6 组件通信
      • 3.6.1 父组件向子组件传递数据
      • 3.6.2 子组件向父组件传递数据
      • 3.6.3 跨级组件之间的数据传递
    • 3.7 案例:待办事项
  • 4 组件基础(下)
    • 4.1 动态组件
    • 4.2 插槽
    • 4.3 自定义指令
    • 4.4 引用静态资源
    • 4.5 案例:商品管理
  • 5 网络请求
    • 5.1 Axios
    • 5.2 Axios图书列表案例
  • 6 状态管理
    • 6.1 Vuex
    • 6.2 Pinia
  • 7 路由
    • 7.1 初识路由和VueRouter
    • 7.2 嵌套路由
    • 7.3 路由重定向
    • 7.4 动态路由
    • 7.5 命名路由
    • 7.6 编程式导航
    • 7.7 导航守卫
    • 7.8 案例:后台管理系统
  • 8 常用UI组件库
    • 8.1 Element Plus组件库
    • 8.2 Vant组件库
    • 8.3 Ant Design Vue组件库
  • 9 项目实战
    • 9.1 项目所需软件
    • 9.2 项目前台分析
    • 9.3 “微商城”后台分析
Axios图书列表案例

使用Axios实现图书列表案例,图书列表页面初始效果如下图所示。


单击上图中“请求数据”按钮,数据请求成功页面效果如下图所示。



图书列表案例的实现分为以下2步。

  1. 模拟数据

    为了方便演示,使用mockjs模拟后端接口,下面讲解如何安装mockjs,以及编写模拟数据和配置模拟数据的相关信息。

使用mockjs模拟后端接口

(1)使用yarn安装mockjs。

yarn add mockjs@1.1.0 --save

(2)创建src\mock\books.json文件,该文件用于存放模拟的数据。

[
 {
   "id": 1,
   "name": "西游记",
   "author": "吴承恩"
 },
 {
   "id": 2,
   "name": "红楼梦",
   "author": "曹雪芹"
 },
   {
   "id": 3,
   "name": "三国演义",
   "author": "罗贯中"
 },
 {
   "id": 4,
   "name": "水浒传",
   "author": "施耐庵"
 }
]


(3)创建src\mock\mockServer.js文件,该文件用于配置模拟数据的相关信息。

import Mock from 'mockjs'
import books from './books.json'
Mock.mock('/mock/getBooks', 'get', {
 code: 200, // 请求成功的状态码
 data: books // 模拟的请求数据
})


(3)修改src\main.js文件,在创建Vue应用实例前导入mockServer.js文件。

import './mock/mockServer.js'



  2. 请求数据

     后端接口和模拟数据准备好之后,就可以请求接口、获取数据了。下面讲解如何在页面中请求接口并获取数据。

<template>
 <div class="box">
   <button>请求数据</button>
   <table width="90%" class="table">
     <caption>
       <h2>图书列表</h2>
     </caption>
     <thead>
       <tr>
         <th>编号</th>
         <th>书名</th>
         <th>作者</th>
       </tr>
     </thead>
     <tbody>
       <!-- 主体内容 -->
     </tbody>
   </table>
 </div>
</template>
<style>
body, html {
 width: 100%;
 height: 100%;
}
#app {
 width: 100% !important;
}
table {
 border-collapse: collapse;
 margin: 0 auto;
 text-align: center;
 }
table td, table th {
 border: 1px solid #cad9ea;
 color: #666;
 height: 30px;
}
table thead th {
 background-color: #CCE8EB;
 width: 100px;
}
table tr:nth-child(odd) {
 background: #fff;
}
table tr:nth-child(even) {
 background: #F5FAFA;
}
</style>

为“请求数据”按钮绑定单击事件处理方法。

<button @click="getData">请求数据</button>


在src\App.vue文件中请求接口数据。

<script setup>
import { reactive } from 'vue'
import request from './axios/request.js'
const bookData = reactive({
 list: []
})
// 测试请求方法
const getData = function() {
 request({
   url: '/mock/getBooks',
   method: 'get'
 }).then(res => {
   bookData.list = res.data.data
   console.log(res.data.data)
 }).catch(error => {
   console.log(error)
 })
}
</script>


在src\App.vue文件中编写主体内容。

<tbody v-for="item in bookData.list" :key="item.id">
 <!-- 主体内容 -->
 <tr>
   <td>{{ item.id }}</td>
   <td>{{ item.name }}</td>
   <td>{{ item.author }}</td>
 </tr>
</tbody>