Nuxt3动态导入图片(本地) src

以下是我的解决路程,反正踩了很久的坑,解决方法写在最下面,直接看下面即可

firstDefaultImg.value = `~/assets/tswstyle/images/company.png`;本地和打包后都看不到图

firstDefaultImg.value = `_nuxt/assets/tswstyle/images/company.png`;本地看的到,打包后无效

解决:写在public下:firstDefaultImg.value = `tswstyle/images/company.png`;

nuxt3 不再支持 require 动态导入资源

直接这样导入,浏览器报错:ReferenceError: require is not defined

一般引入图片时:

图片在根目录下  assets/tswstyle/images 文件夹下,以下在template模板引入是正确的:

浏览器看到的格式是:

本地开发环境(图片正常显示):

build打包之后(生产环境)看到的(图片正常显示):

问题:但是我这个可能需要好几个图片来回替换,不想写在 template 模板中:

我就想直接在 script 内写:

<img :src="firstData.cover ? firstData.cover : firstDefaultImg" alt="" />

const firstDefaultImg = ref(''); //没有图片就用这个默认的图片地址(字符串)
//因为是 tab切换的,所以切换的tab不同,默认图片也不同
switch (active.value) {
        case 1:
          firstDefaultImg.value = `~/assets/tswstyle/images/company.png`;
          break;
        case 2:
          firstDefaultImg.value = `~/assets/tswstyle/images/govbusCommunication.png`;
          break;
        case 3:
          firstDefaultImg.value = `~/assets/tswstyle/images/Partyactivity.jpg`;
          break;
        case 4:
          firstDefaultImg.value = `~/assets/tswstyle/images/welfare.png`;
          break;
        case 5:
          firstDefaultImg.value = `~/assets/tswstyle/images/recruitImg.png`;
          break;
        default:
          break;
      }

但是在浏览器中看到的图片地址并没有转化(依然是我写的字符串):

根据浏览器生成的 _nuxt,我就将赋值地址改为(图片的地址没动,还是在根目录下的assets/tswstyle/images文件夹中):

firstDefaultImg.value = `_nuxt/assets/tswstyle/images/company.png`;

在本地确实能看到图片:

浏览器中:

但是build打包之后,图片显示不出来:

都是以原本的字符串展示(没有解析成对应的地址)

解决方法:图片可以直接搬到 public,根目录下的 public/tswstyle/images 文件夹下:

直接这样写路径即可:

firstDefaultImg.value = `tswstyle/images/company.png`;

本地浏览器(可以自己解析),图片展示没问题:

build打包之后,生产环境下(图片展示没问题):

浏览器的地址显示:

补充:

坑:引入 public 时,上面这个文件的地址

<img src="index/commerceIntroduce.png" alt="" />

这样引入, npm run dev  可以看到加载的文件,但是run build 打包会出错:

引入public 静态资源还是要用下面这种写法引入:

方法一:

<img src="~/public/index/commerceIntroduce.png" alt="" />

方法二:<img :src=" 'index/commerceIntroduce.png' " alt="" />

这个代码,其实是把他动态引入,跟最上面的一样,让vue帮我们去解析,还是可以正常打包上线的

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Nuxt.js是一个基于Vue.js的服务端渲染框架,它可以帮助我们快速搭建高性能的网站。在Nuxt.js中,我们可以使用动态路由来传递参数。 当我们需要传递多个参数时,可以在Nuxt.js的路由配置文件(nuxt.config.js)中使用动态路由。具体步骤如下: 1. 打开nuxt.config.js文件,在其中找到routes选项。 2. 在routes选项中,我们可以定义一系列的route对象来配置不同的路由。 3. 在每个route对象中,使用path属性来定义路由的路径。在路径中,可以使用冒号(:)来指定参数的位置。 4. 使用params属性来指定该参数的名称。 例如,我们希望创建一个动态路由,其中包含两个参数:category和id。我们可以像下面这样配置路由: ```js export default { routes: [ { path: '/post/:category/:id', component: '~/pages/post.vue' } ] } ``` 在这个示例中,路由的路径是`/post/:category/:id`,其中冒号后面的部分表示参数的位置。我们可以在实际访问该路由时,将具体的参数替换到路径中,例如`/post/vuejs/123`。 在页面组件中,我们可以通过`this.$route.params`来访问传递的参数。在上面的示例中,我们可以在`~/pages/post.vue`组件中使用`this.$route.params.category`和`this.$route.params.id`来获取对应的参数值。 总结起来,使用Nuxt.js的动态路由多个参数的步骤包括在nuxt.config.js文件中配置路由,设置路由的路径和参数名称,然后在页面组件中通过`this.$route.params`获取参数的值。通过这种方式,我们可以轻松地处理多个参数的动态路由。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值