Vue3通过axios来读取本地json文件

前言

一般前端mock数据或者数据量过大且不需要考虑安全问题,或者数据稳定不需要常做变更的场景,这些数据可以由前端进行维护,将数据转为json文件放到前端本地进行读取。

本人在项目开发中,要实现地图的下钻功能,将各省市的json下载到了本地静态资源包中,结果请求时总是报错404

正题

前端存放JSON文件的位置
我们的项目是通过vue-cli3创建的,vue-cli3版本脚手架对外暴露的静态文件入口是public文件夹(原来是static文件夹),这里本地json文件也应该放在这里

在这里插入图片描述

请求JSON数据

直接通过axios请求即可

import axios from './$http'

// 静态数据
const API = {
  // 关于我们 banner 图
  getAboutBanner (url) {
    return axios.get('/mock/AboutBanner.json')
  }
}

export default API

在这里插入图片描述

特别注意:json文件存放在public目录下,如/public/template/province/jsonData.json,那么在请求json数据的时候,地址千万千万千万不能写/public/template/province/jsonData.json,而是写/template/province/jsonData.json,否则会报404,因为静态资源在打包后,默认public内的文件放在项目根目录

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue3 中,可以使用 `axios` 或 `fetch` 等 HTTP 请求库来读取本地 JSON 文件。 以 `axios` 为例,首先需要安装 `axios`: ``` npm install axios --save ``` 然后在需要读取 JSON 文件的组件中,引入 `axios` 并发起 GET 请求: ```javascript import axios from 'axios' export default { data() { return { jsonData: null } }, created() { axios.get('/data.json') .then(response => { this.jsonData = response.data }) .catch(error => { console.log(error) }) } } ``` 在上述例子中,`data.json` 是存放在项目根目录下的本地 JSON 文件。`axios.get()` 方法返回一个 Promise 对象,可以使用 `.then()` 处理请求成功的响应结果,使用 `.catch()` 处理请求失败的情况。在成功的情况下,将响应结果赋值给组件的 `jsonData` 数据项。 需要注意的是,在开发环境下,读取本地 JSON 文件的路径为相对于开发服务器的根目录的相对路径,例如 `/data.json` 表示根目录下的 `data.json` 文件。在生产环境下,读取本地 JSON 文件需要使用绝对路径,或者将 JSON 文件打包到静态资源中。 另外,还可以使用 `fetch` 发起 HTTP 请求,例如: ```javascript import jsonFile from './data.json' export default { data() { return { jsonData: null } }, created() { fetch(jsonFile) .then(response => { return response.json() }) .then(data => { this.jsonData = data }) .catch(error => { console.log(error) }) } } ``` 在上述例子中,`data.json` 是通过 `import` 引入的本地 JSON 文件,使用 `fetch()` 方法发起 GET 请求,并使用 `.then()` 处理请求成功的响应结果,使用 `.catch()` 处理请求失败的情况。在成功的情况下,将响应结果赋值给组件的 `jsonData` 数据项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kingsaj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值