Axios-图书列表案例

一、基本概念

1、什么是Axios

2、安装Axios

使用npm或yarn包管理工具安装Axios。

复制代码
# 使用npm包管理工具安装
npm install axios --save

3、掌握Axios 的用法

步骤1 :将Axios封装成模块,创建src\axios\request.js文件。

复制代码
import axios from 'axios'
const request = axios.create({
  timeout: 2000
})
export default request

步骤2:在组件中导入模块,在src\App.vue文件中导入模块。

复制代码
import request from './axios/request.js'

补充概念

什么是API

HTTP请求中的get请求和post请求的区别

二、代码及运行结果

Axios****图书列表案例

步骤1:在项目目录下安装mockjs

复制代码
npm install mockjs --save-dev

步骤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	// 模拟的请求数据
})

步骤4:修改src\main.js文件,在创建Vue应用实例前导入mockServer.js文件

步骤5:新建tslb.vue 文件,图书列表显示页面

复制代码
<template>
  <div class="box">
    <button @click="getData">请求数据</button>

    <table width="90%" class="table">
      <caption>
        <h2>图书列表</h2>
      </caption>
      <thead>
        <tr>
          <th>编号</th>
          <th>书名</th>
          <th>作者</th>
        </tr>
      </thead>
      <!-- 把 v-for 放到 <tr> 上,而不是 <tbody> -->
      <tbody>
        <tr v-for="item in bookData.list" :key="item.id">
          <td>{{ item.id }}</td>
          <td>{{ item.name }}</td>
          <td>{{ item.author }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<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>

<style>
body, html {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}
#app {
  width: 100% !important;
}
.box {
  width: 100%;
  padding: 20px 0;
}
button {
  margin-bottom: 20px;
  padding: 6px 12px;
  cursor: pointer;
}
table {
  border-collapse: collapse;
  margin: 0 auto;
  text-align: center;
  width: 90%; /* 确保表格宽度和属性一致 */
}
table td, table th {
  border: 1px solid #cad9ea;
  color: #666;
  height: 30px;
  padding: 0 8px;
}
table thead th {
  background-color: #CCE8EB;
  /* 给三列设置统一宽度,保证对齐 */
  width: 33.33%;
}
table tr:nth-child(odd) {
  background: #fff;
}
table tr:nth-child(even) {
  background: #F5FAFA;
}
</style>

步骤6:运行结果

相关推荐
2501_944521597 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理7 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
Ken_11159 小时前
小体积附件下载正常,大附件下载异常
javascript
wangchunyu1149 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
变与不变8069 小时前
jQuery怎么使用
前端·javascript
神膘护体小月半10 小时前
flex 布局的 order 属性
前端·css
paopaokaka_luck10 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
仰望.10 小时前
vue 表格组件 vxe-table 树表格懒加载支持拖拽排序的详细用法
前端·javascript·vue.js·vxe-table
前端 贾公子10 小时前
vite-plugin-uni-manifest 升级指南
前端
小码哥_常10 小时前
iPhone 用户传了张 HEIC,我的前端崩了
前端