Vue动态引用json数据的两种方式

 更新时间:2025年04月01日 08:31:58   作者:还是大剑师兰特  
在 Vue 项目中引用 JSON 文件非常简单,尤其是当文件内容是一个数组时,本文给大家介绍了Vue动态引用json数据的两种方式,并有相关的代码示例供大家参考,需要的朋友可以参考下

1. 将 JSON 文件放在合适的位置

通常会将 JSON 文件放在 public 或 src/assets 目录下:

  • 如果放在 public 文件夹中,可以通过相对路径直接访问。
  • 如果放在 src/assets 文件夹中,需要通过 import 引入。

2. 引用 JSON 文件的方式

方式一:使用 import 引入(推荐)

假设你的 JSON 文件名为 data.json,内容如下:

[
  { "id": 1, "name": "Alice" },
  { "id": 2, "name": "Bob" },
  { "id": 3, "name": "Charlie" }
]

步骤:

  • 将 data.json 放在 src/assets 文件夹中。
  • 在 Vue 组件中通过 import 引入并使用。

代码示例:

<template>
  <div>
    <h3>JSON 数据列表</h3>
    <ul>
      <li v-for="item in jsonData" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
// 引入 JSON 文件
import jsonData from '@/assets/data.json';

export default {
  data() {
    return {
      jsonData, // 将 JSON 数据绑定到组件的 data 中
    };
  },
};
</script>

说明:

  • @ 是 Webpack 的别名,表示 src 文件夹。
  • JSON 文件会被自动解析为 JavaScript 对象或数组。

方式二:通过 fetch 或 axios 动态加载

如果 JSON 文件放在 public 文件夹中,可以使用 fetch 或 axios 动态加载。

步骤:

  • 将 data.json 放在 public 文件夹中。
  • 使用 fetch 或 axios 加载 JSON 文件。

代码示例:

<template>
  <div>
    <h3>JSON 数据列表</h3>
    <ul>
      <li v-for="item in jsonData" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      jsonData: [], // 初始化为空数组
    };
  },
  mounted() {
    // 使用 fetch 加载 JSON 文件
    fetch('/data.json') // public 文件夹下的文件可以直接通过根路径访问
      .then((response) => response.json())
      .then((data) => {
        this.jsonData = data; // 将数据赋值给 jsonData
      })
      .catch((error) => {
        console.error('加载 JSON 文件失败:', error);
      });
  },
};
</script>

说明:

  • public 文件夹中的文件不会被 Webpack 处理,而是直接复制到构建目录中,因此可以通过根路径访问。
  • 如果使用 axios,代码类似,只需将 fetch 替换为 axios.get

3. 总结两种方式的适用场景

  • import 方式
    • 适用于静态数据,数据在编译时确定。
    • 数据会被打包进最终的 JavaScript 文件中。
  • fetch 或 axios 方式
    • 适用于动态加载的数据,或者 JSON 文件较大、不需要每次都加载的情况。
    • 数据不会被打包进 JavaScript 文件中,而是运行时从服务器加载。

根据你的需求选择合适的方式!

到此这篇关于Vue动态引用json数据的两种方式的文章就介绍到这了,更多相关Vue引用json数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue3结合ts从零实现vueuse的useRouteQuery方法

    vue3结合ts从零实现vueuse的useRouteQuery方法

    这篇文章主要为大家详细介绍了如何使用vue3与ts从零实现一个类vueuse的useRouteQuery方法,并解决vueuse的useRouteQuery方法存在的一些问题,感兴趣的可以了解下
    2024-03-03
  • Vue3项目中reset.scss模板使用导入

    Vue3项目中reset.scss模板使用导入

    这篇文章主要为大家介绍了Vue3项目中reset.scss模板使用导入示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Vue中的性能优化方案

    Vue中的性能优化方案

    本文主要介绍了Vue中的性能优化方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • vue页面锁屏的完美解决方法记录

    vue页面锁屏的完美解决方法记录

    锁屏是指用户暂时离开时点击锁屏,用户无法跳转到其他页面,回来输入密码点击解锁,下面这篇文章主要给大家介绍了关于vue页面锁屏的完美解决方法,需要的朋友可以参考下
    2022-06-06
  • vue导入excel文件,vue导入多个sheets的方式

    vue导入excel文件,vue导入多个sheets的方式

    这篇文章主要介绍了vue导入excel文件,vue导入多个sheets的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue vxe-table使用问题收录小结

    Vue vxe-table使用问题收录小结

    这篇文章主要为大家介绍了Vue vxe-table使用问题收录小结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • VUE和Antv G6实现在线拓扑图编辑操作

    VUE和Antv G6实现在线拓扑图编辑操作

    这篇文章主要介绍了VUE和Antv G6实现在线拓扑图编辑操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Vue中v-html图片过大导致溢出的问题及解决

    Vue中v-html图片过大导致溢出的问题及解决

    这篇文章主要介绍了Vue中v-html图片过大导致溢出的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vue-router 控制路由权限的实现

    vue-router 控制路由权限的实现

    这篇文章主要介绍了vue-router 控制路由权限的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Vue.set()和this.$set()使用和区别

    Vue.set()和this.$set()使用和区别

    我们发现Vue.set()和this.$set()这两个api的实现原理基本一模一样,那么Vue.set()和this.$set()的区别是什么,本文详细的介绍一下,感兴趣的可以了解一下
    2021-06-06

最新评论