关于van-card中thumb引入本地图片而无法正常显示的解决方法

关于van-card中thumb引入本地图片而无法正常显示的解决方法

前言

最近在弄一个微信公众号,是H5前端,用到的是vant组件。
当然Vant的官方文档以及例子都有,但是很多时候并不能满足我们的需求,需要对它进一步开发。
Vant官方文档

使用官方的例子

<van-card
      title="小明"
      desc="常出现于小学初中作文、英语、数学题、物理题、化学题
            和笑话中。此名拥有极为悠久的历史内涵,在中国的各种“名著”
            上皆有出现,体现了中国丰富的华夏文明,甚至一度代表中国冲
            出亚洲,成为了”最有影响力的名字“之一。"
      thumb="https://pic1.zhimg.com/80/v2-8f151a102586aec7cb672736497d7bd2_qhd.jpg"
      />

效果如下:
图片2
很明显,引用非本地的图片没有问题,但是引入了本地的图片就会gg,其实一开始我引入图片没有问题,后来重启了前端就不行了(在线求大佬指导,缓存清过了,也是不行),你会发现,图片引入路径没有问题,但是就是不显示,把图片url复制去查看,然后控制台监视,发现会报错:

Uncaught SyntaxError: Unexpected token ‘<‘ 

是什么原因呢,网上有说很多不同的问题导致,有些说是js引入错误,有些说是图片地址有问题,解决方案也是五花八门,那么至于要深究为什么的,请移步这里:
解决 Uncaught SyntaxError: Unexpected token ‘<‘ 错误解决方法

解决办法

我参考了网上的解决方法,采用了我都觉得不太科学的解决方案,我将静态文件放到了public下面,然后就见鬼的能用了。
截止发帖前,我删掉了public文件夹下面的静态资源,又能显示了,我在引入地址上没有使用require也能正常显示,我百思不得其解。

总结

(一)assets文件夹与static文件夹的区别
区别一:assets文件是src下的,所以最后运行时需要进行打包,而static文件不需要打包就直接放在最终的文件中了

区别二:assets中的文件在vue中的template/style下用…/这种相对路径的形式进行引用,在script下必须用@import的方式引入,而static下的文件在.vue中的任何地方都只要使用…/这种相对路径的方式引入

结论:
1.assets用来放置样式、静态图片,只要src下面的组件中用到的资源就放在assets中。

2.static用来放没有npm包的第三方插件,字体文件。

3.assets与components同级 components下的.vue引用静态文件时,相对路径为 …/assets/images/

4.assets与app.vue同级 相对路径为 ./assets/images/

(二)vue如何引入其它静态文件:

1.src目录下的资源只能import或require

2.想静态引入的话,建立一个与src同级的目录例如static,然后把静态资源放入该文件夹下,html的引入路径如下:./static/…

注:试过一定要放在static文件夹下,否则报错

原文地址:Vue内部的 静态资源文件引用规则

有一定的知识补充,但是我的问题并没有得到很好的解释,静待大佬指教。

<template> <van-pull-refresh v-model="refreshing" @refresh="onRefresh"> <van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="onLoad"> <!-- <van-cell v-for="item in courses" :key="item" :title="item.title" /> --> <van-card v-for="item in courses" :key="item" num="2" price="2.00" :desc="item.body" :title="item.id + '-' + item.title" thumb="https://fastly.jsdelivr.net/npm/@vant/assets/ipad.jpeg" @click="ToCardDetail(item)"/> <template slots="loading"> <van-loading class="load-more-loading" /> <span class="load-more-text">加载中...</span> </template> </van-list> </van-pull-refresh> </template> <script> export default { name: "LoadMore", data() { return { list: [], courses: [], loading: false, finished: false, refreshing: false }; }, methods: { onLoad() { setTimeout(() => { if (this.refreshing) { this.courses = []; this.refreshing = false; } for (let i = 0; i < 10; i++) { this.courses.push(this.list[this.courses.length]); } this.loading = false; if (this.courses.length >= 40) { this.finished = true; } }, 3000); }, onRefresh() { // 清空列表数据 this.finished = false; // 重新加载数据 // 将 loading 设置为 true,表示处于加载状态 this.loading = true; this.onLoad(); }, ToCardDetail(item) { // 获取详情页的路由地址,例如:/detail/1 let detailPath = ../views/CardDetail/${item.id}; // 跳转到详情页 this.$router.push(detailPath); } }, created() { let url = "http://jsonplaceholder.typicode.com/posts" this.axios.get(url).then((res) => { this.list = res.data }) } }; </script> <style scoped> .load-more-loading { margin-right: 6px; } .load-more-text { font-size: 14px; color: #999; } </style>card详情页carddetail的代码怎么写
05-25
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值