vue引用public文件夹中文件的多种方式

2024-03-01 0 851
目录
  • 1 官方解释
  • 2 使用
    • 2.1 图片文件
      • 方式一(ide正常,页面正常,img标签src属性赋值绝对路径/):
      • 方式二 (ide警告,页面正常,img标签src属性赋值绝对路径/public)
      • 方式三(ide警告,页面正常,img标签src属性赋值相对路径../../public):
      • 方式四(ide正常,页面正常,img标签src属性绑定变量,变量赋值/):
      • 方式五(ide警告,开发页面正常,生产页面报错,img标签src属性绑定变量,变量赋值/public):
      • 方式六(ide警告,页面正常,img标签src属性绑定变量,变量赋值../../public):
      • 方式七(ide正常,页面正常,import图片,路径为/):
      • 方式八(ide警告,页面正常,import图片,路径为/public):
      • 方式九(ide警告,页面正常,import图片,路径为../../public):
    • 2.2 json文件
      • 方式一(ide报错,页面报错,无法使用,import引入):
      • 方式二(页面正常,import引入,增加?url参数):
      • 方式三(ide警告,页面正常,import引入,路径增加/public):
      • 方式四(ide警告,页面正常,import引入,路径增加../../public相对路径):
    • 2.3 js文件
      • 方式一(报错,无法使用,import引入):
      • 方式二(ide警告,页面正常,import引用,路径加/public,绝对路径):
      • 方式三(ide警告,页面正常,import引用,路径加../../public,相对路径):
  • 3 结论
    • 总结

      1 官方解释

      vue引用public文件夹中文件的多种方式

      vite官网解释

      2 使用

      可以先看最下面结论

      vue引用public文件夹中文件的多种方式

      vue引用public文件夹中文件的多种方式

      在Test.vue组件中测试

      2.1 图片文件

      vue引用public文件夹中文件的多种方式

      方式一(ide正常,页面正常,img标签src属性赋值绝对路径/):

      <template>
      <div class=\”view\”><img src=\”/moon.png\” /></div>
      </template>
      <script setup lang=\”ts\”>
      console.log(\”aaa\”);
      </script>
      <style scoped>
      img {
      width: 300px;
      height: 300px;
      }
      </style>

      build后:

      vue引用public文件夹中文件的多种方式

      页面显示:

      vue引用public文件夹中文件的多种方式

      方式二 (ide警告,页面正常,img标签src属性赋值绝对路径/public)

      <template>
      <div class=\”view\”><img src=\”/public/moon.png\” /></div>
      </template>
      <script setup lang=\”ts\”>
      console.log(\”aaa\”);
      </script>
      <style scoped>
      img {
      width: 300px;
      height: 300px;
      }
      </style>

      ide警告:

      vue引用public文件夹中文件的多种方式

      build后:

      vue引用public文件夹中文件的多种方式

      可以看到,这样的方式引用,会把图片文件复制一份,名称追加hash值,放在assets下面,根目录下的moon.png并没有被引用

      vue引用public文件夹中文件的多种方式

      页面显示:

      vue引用public文件夹中文件的多种方式

      方式三(ide警告,页面正常,img标签src属性赋值相对路径../../public):

      <template>
      <div class=\”view\”><img src=\”../../public/moon.png\” /></div>
      </template>
      <script setup lang=\”ts\”>
      console.log(\”aaa\”);
      </script>
      <style scoped>
      img {
      width: 300px;
      height: 300px;
      }
      </style>

      ide警告:

      vue引用public文件夹中文件的多种方式

      build后:

      vue引用public文件夹中文件的多种方式

      可以看到,这样的方式引用,会把图片文件复制一份,名称追加hash值,放在assets下面,根目录下的moon.png并没有被引用

      vue引用public文件夹中文件的多种方式

      页面显示:

      vue引用public文件夹中文件的多种方式

      方式四(ide正常,页面正常,img标签src属性绑定变量,变量赋值/):

      <template>
      <div class=\”view\”>
      <img :src=\”img\” />
      </div>
      </template>
      <script setup lang=\”ts\”>
      const img = \”/moon.png\”;

      console.log(\”aaa\”);
      </script>
      <style scoped>
      img {
      width: 300px;
      height: 300px;
      }
      </style>

      build后:

      vue引用public文件夹中文件的多种方式

      页面显示:

      vue引用public文件夹中文件的多种方式

      方式五(ide警告,开发页面正常,生产页面报错,img标签src属性绑定变量,变量赋值/public):

      <template>
      <div class=\”view\”><img :src=\”img\” /></div>
      </template>
      <script setup lang=\”ts\”>
      const img = \”/public/moon.png\”;
      console.log(\”aaa\”);
      </script>
      <style scoped>
      img {
      width: 300px;
      height: 300px;
      }
      </style>

      ide警告:

      vue引用public文件夹中文件的多种方式

      build后:

      vue引用public文件夹中文件的多种方式

      页面显示:

      vue引用public文件夹中文件的多种方式

      上图显示正常是因为在开发环境,存在public路径,但是如果部署服务器,就会找不到图片如下图,因为没有public这个路径,

      vue引用public文件夹中文件的多种方式

      方式六(ide警告,页面正常,img标签src属性绑定变量,变量赋值../../public):

      <template>
      <div class=\”view\”><img :src=\”img\” /></div>
      </template>
      <script setup lang=\”ts\”>
      const img = \”../../public/moon.png\”;
      console.log(\”aaa\”);
      </script>
      <style scoped>
      img {
      width: 300px;
      height: 300px;
      }
      </style>

      ide警告:

      vue引用public文件夹中文件的多种方式

      build后:

      vue引用public文件夹中文件的多种方式

      页面显示:

      vue引用public文件夹中文件的多种方式

      上图显示正常是因为在开发环境,存在public路径,但是如果部署服务器,就会找不到图片如下图,因为没有public这个路径,

      vue引用public文件夹中文件的多种方式

      方式七(ide正常,页面正常,import图片,路径为/):

      <template>
      <div class=\”view\”><img :src=\”img\” /></div>
      </template>
      <script setup lang=\”ts\”>
      import img from \”/moon.png\”;
      console.log(\”aaa\”);
      </script>
      <style scoped>
      img {
      width: 300px;
      height: 300px;
      }
      </style>

      build后:

      vue引用public文件夹中文件的多种方式

      页面显示:

      vue引用public文件夹中文件的多种方式

      方式八(ide警告,页面正常,import图片,路径为/public):

      <template>
      <div class=\”view\”><img :src=\”img\” /></div>
      </template>
      <script setup lang=\”ts\”>
      import img from \”/public/moon.png\”;
      console.log(\”aaa\”);
      </script>
      <style scoped>
      img {
      width: 300px;
      height: 300px;
      }
      </style>

      ide警告:

      vue引用public文件夹中文件的多种方式

      build后:

      vue引用public文件夹中文件的多种方式

      可以看到,这样的方式引用,会把图片文件复制一份,名称追加hash值,,放在assets下面,根目录下的moon.png并没有被引用

      vue引用public文件夹中文件的多种方式

      页面显示:

      vue引用public文件夹中文件的多种方式

      方式九(ide警告,页面正常,import图片,路径为../../public):

      <template>
      <div class=\”view\”><img :src=\”img\” /></div>
      </template>
      <script setup lang=\”ts\”>
      import img from \”../../public/moon.png\”;
      console.log(\”aaa\”);
      </script>
      <style scoped>
      img {
      width: 300px;
      height: 300px;
      }
      </style>

      ide警告:

      vue引用public文件夹中文件的多种方式

      build后:

      vue引用public文件夹中文件的多种方式

      可以看到,这样的方式引用,会把图片文件复制一份,名称追加hash值,,放在assets下面,根目录下的moon.png并没有被引用

      vue引用public文件夹中文件的多种方式

      页面显示:

      vue引用public文件夹中文件的多种方式

      2.2 json文件

      vue引用public文件夹中文件的多种方式

      方式一(ide报错,页面报错,无法使用,import引入):

      <template>
      {{ data }}
      </template>
      <script setup lang=\”ts\”>
      import data from \”/data.json\”;
      console.log(\”aaa\”, data);
      </script>
      <style scoped></style>

      ide报错:

      vue引用public文件夹中文件的多种方式

      页面报错:

      vue引用public文件夹中文件的多种方式

      方式二(页面正常,import引入,增加?url参数):

      <template>
      {{ data }}
      </template>
      <script setup lang=\”ts\”>
      import data from \”/data.json?url\”;
      console.log(\”aaa\”, data);
      </script>
      <style scoped></style>

      build后:

      vue引用public文件夹中文件的多种方式

      页面显示:

      vue引用public文件夹中文件的多种方式

      可以看到页面仅仅显示路径,而不是文件内容

      方式三(ide警告,页面正常,import引入,路径增加/public):

      <template>
      {{ data }}
      </template>
      <script setup lang=\”ts\”>
      import data from \”/public/data.json\”;
      console.log(\”aaa\”, data);
      </script>
      <style scoped></style>

      ide警告:

      vue引用public文件夹中文件的多种方式

      "vue-tsc && vite build"命令build报错:

      vue引用public文件夹中文件的多种方式

      "vite build"命令build后:

      vue引用public文件夹中文件的多种方式

      可以看到,虽然有警告,但是/public中的json文件,在vue组件中用import { test } from '/public/data.json' 方式引入后还是可以使用的,但是json文件内容已经被引入到当前js中了,实际上删除打包后根目录中的data.json也不会影响

      页面正常:

      vue引用public文件夹中文件的多种方式

      方式四(ide警告,页面正常,import引入,路径增加../../public相对路径):

      <template>
      {{ data }}
      </template>
      <script setup lang=\”ts\”>
      import data from \”../../public/data.json\”;
      console.log(\”aaa\”, data);
      </script>
      <style scoped></style>

      ide警告:

      vue引用public文件夹中文件的多种方式

      build后:

      vue引用public文件夹中文件的多种方式

      页面显示:

      vue引用public文件夹中文件的多种方式

      2.3 js文件

      vue引用public文件夹中文件的多种方式

      方式一(报错,无法使用,import引入):

      <template>
      {{ test }}
      </template>
      <script setup lang=\”ts\”>
      import {test} from \”/test.js\”;
      console.log(\”aaa\”, test);
      </script>
      <style scoped></style>

      ide报错:

      vue引用public文件夹中文件的多种方式

      页面报错:

      vue引用public文件夹中文件的多种方式

      方式二(ide警告,页面正常,import引用,路径加/public,绝对路径):

      <template>
      {{ test }}
      </template>
      <script setup lang=\”ts\”>
      import {test} from \”/public/test.js\”;
      console.log(\”aaa\”, test);
      </script>
      <style scoped></style>

      ide警告:

      vue引用public文件夹中文件的多种方式

      "vue-tsc && vite build"命令build报错:

      vue引用public文件夹中文件的多种方式

      "vite build"命令build后:

      vue引用public文件夹中文件的多种方式

      可以看到,虽然有警告,但是/public中的js文件,在vue组件中用import { test } from '/public/test.js' 方式引入后还是可以使用的,但是js文件内容已经被引入到当前js中了,test.js也不会影响

      页面显示:

      vue引用public文件夹中文件的多种方式

      方式三(ide警告,页面正常,import引用,路径加../../public,相对路径):

      <template>
      {{ test }}
      </template>
      <script setup lang=\”ts\”>
      import {test} from \”../../public/test.js\”;
      console.log(\”aaa\”, test);
      </script>
      <style scoped></style>

      ide警告:

      vue引用public文件夹中文件的多种方式

      "vue-tsc && vite build"命令build报错:

      vue引用public文件夹中文件的多种方式

      "vite build"命令build后:

      vue引用public文件夹中文件的多种方式

      可以看到,虽然有警告,但是/public中的js文件,在vue组件中用import { test } from '/public/test.js' 方式引入后还是可以使用的,但是js文件内容已经被引入到当前js中了,test.js也不会影响

      3 结论

      vue引用public文件夹中文件的多种方式

      vue引用public文件夹中文件的多种方式

      综上:

      • 1,4,7是正确用法,
      • 5,6,10,14是错误用法,
      • 2,3,8,9可以使用,但是图片会被复制到assets文件夹,重命名hash,违背放在/public的初衷,
      • 11无法获取文件内容,
      • 12,13,15,16可以使用,但是json和js会被复制到assets文件夹,重命名hash,违背放在/public的初衷
      • 如果有一个json/js文件,含有大量数据,不会经常变动,如果按照官网解释,放在src中的assets文件夹中,build时候会被打包,并且hash命名,不符合我们本意,如果直接放在/public文件夹,只要在组件中引入,build时,就会自动复制到输出目录的/assets/文件夹中,并且hash命名(图片)或者将其内容打包到引用的js文件中(json,js),不符合我们本意,临时的办法是,在index.html中引入json/js文件,但是这样是全局的

      总结

      到此这篇关于vue引用public文件夹中文件的多种方式的文章就介绍到这了,更多相关vue引用public文件夹文件内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

      您可能感兴趣的文章:

      • vue-cli3访问public文件夹静态资源报错的解决方式

      收藏 (0) 打赏

      感谢您的支持,我会继续努力的!

      打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
      点赞 (0)

      悠久资源 JavaScript vue引用public文件夹中文件的多种方式 https://www.u-9.cn/biancheng/javascript/182617.html

      常见问题

      相关文章

      发表评论
      暂无评论
      官方客服团队

      为您解决烦忧 - 24小时在线 专业服务