Vue中读取使用本地json数据,及打包后的访问问题

vue项目中访问本地json能避免,因服务器原因请求速度很慢很慢,

1.首先建立一个json文件,放到static文件下,要保持是正确的json格式,例如,或者你只有data里面的数据就行,我这是从接口返回的数据直接粘贴过来的

{
  "msg": "success",
  "code": 0,
  "data": {
    "activityPrize": [
     
     
      {
        "activityId": 34,
        "productId": 1589,
        "imagePath": "https://qingdao.aliyuncs.com/commodity/92eca519021d4ff09d12f530a330a03a.jpg",
        "numberLimitPrize": -1,
        "shortTitle": "四等奖",
        "id": 106,
        "shopId": 13,
        "title": "【中秋聚惠】AKOKO曲奇品鉴大礼包 ",
        "type": 2,
        "version": 2,
        "ratio": 0.1
      },
      {
        "activityId": 34,
        "productId": 1588,
        "imagePath": "https://qingdao.aliyuncs.com/commodity/92eca519021d4ff09d12f530a330a03a.jpg",
        "numberLimitPrize": -1,
        "shortTitle": "五等奖",
        "id": 107,
        "shopId": 13,
        "title": "【中秋聚惠】博纳影城电影票 ",
        "type": 2,
        "version": 2,
        "ratio": 0.1
      },
      {
        "activityId": 34,
        "productId": 1578,
        "imagePath": "https://qingdao.aliyuncs.com/commodity/92eca519021d4ff09d12f530a330a03a.jpg",
        "numberLimitPrize": -1,
        "shortTitle": "六等奖",
        "id": 108,
        "shopId": 13,
        "title": "【中秋聚惠】满200减-30元服饰类优惠券",
        "type": 2,
        "version": 0,
        "ratio": 0
      },
     
    ]
  }
}

2.像调用接口你数据一样去调用json数据

我这边用的是vue-resource,,你可以根绝自己的方法来定

     this.$http.get('/static/data.json',
            ).then(function(json){
              this.prizeList = json.data.data.activityPrize;
              console.log(this.prizeList)

            },function(res){
              alert("请求失败");
            })

请求成功

 

 

但是build打包后会访问不到本地json数据,我用的方法,是把json数据放到服务器上和index.html同级的位置,然后访问路径改成绝对路径,

这是比较笨的方法,目前还没发现比较好的解决方法,欢迎小伙伴前来指教

 

祝工作顺利,身体健康

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` 数据项。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值