npm包中有图片等资源时无法加载

前言

上文中讲到将组件A进行打包发布了,但是在项目B中进行使用时发现图片加载不出来,查看图片的路径发现了问题所在,下面将详细分析图片加载不出来的原因和解决方案。

组件A中图片路径

在组件A中使用到的图片会被打包进build文件夹下的img文件夹中
在这里插入图片描述

项目B中使用

但是在项目B中使用时发现图片无法加载,查看路径发现路径错乱,根本加载不到资源
在这里插入图片描述

解决方案

于是想到在项目B中使用时,由于引用的是组件A的打包后的包,就是js文件,所以引用图片的路径变为在js路径下,但是项目B打包后包的js文件夹下根本没有此路径,所以无法加载到这个图片。根据此问题可提供以下解决方案:

  1. 图片不大时,可将图片转为base64形式使用。但是在图片很多时可能会影响性能,图片很大时也可能无法转化。
  2. 将图片资源放在线上服务器上,引用图片路径时使用绝对路径。
  3. 将图片资源放在每个项目的静态文件夹中,每个项目单独维护图片资源。
  4. 在引用组件A时,也可以再引入一下图片资源,这样就可以访问到图片路径了,此方案为娱乐方案。

前三种方案在网上都可以搜到,使用也很简单,下面讲一下方案4,此方案仅供娱乐。

娱乐方案

在项目B中的node_modules中可以看到能拿到组件A中的图片资源,此时可以把图片文件夹复制到项目B的静态文件夹中中,通过copy-webpack-plugin插件可以打包到项目B包中,项目B打包后即可正常访问图片。这种方法和方案3类似了。
在这里插入图片描述
在这里插入图片描述
还有一种方法,就是直接引入图片,也可以通过打包将图片资源放到正确位置。需要配置一下vue.config.js

import ‘…/node_modules/zy-testtt/build/img/2003472.9edbef.jpg’

const path = require('path')
module.exports = {
  chainWebpack: config => {
    // 为啥是images呢?可以通过审查项目 vue inspect > output.js输出到文件中,搜image就懂了
    const urlLoader = config.module.rule('images')
    // 清除已有的所有 loader,一定要进行的操作
    // 如果你不这样做,接下来的 loader 会附加在该规则现有的 loader 之后
    // 具体原理可自行查看webpack官网
    urlLoader.uses.clear()
    urlLoader
    .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
    .use('url-loader')
    .loader('url-loader')
    .options( {
      limit: 1024*1, // 1k
      name:'js/img/[name].[ext]',
      fallback: 'file-loader',  // 当超过1024byte时,会回退使用file-loader
      context: path.resolve(__dirname,'./src'),
      publicPath: '/' //采用根路径
    })
  },
}

在这里插入图片描述
vue.config.js中的配置从网上某个博客中拿过来的,忘了是哪个博客了。
从上图可看到图片可以正常加载了,ok,娱乐结束,认真了,有好的方案的话欢迎留言,想学习!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
npm小程序图片预览是指在小程序中使用npm包来实现对图片进行预览的功能。通常情况下,小程序中的图片是使用`<image>`标签来展示的,但是只能显示图片的缩略图,并不能提供预览大图的功能。而通过使用npm包,可以方便地实现图片的预览功能。 首先,我们需要在小程序项目中安装所需的npm包,可以通过在`project.config.json`文件中配置`useNpm`字段来启用npm。然后在命令行中运行`npm install <packageName>`来安装相应的npm包。 安装完npm包后,我们可以在小程序的页面文件中引入所需的npm包。通常情况下,我们会在页面的`js`文件中使用`require()`函数来引入npm包,并创建相应的实例。 接下来,在小程序的页面文件中,我们可以使用npm包提供的API来实现图片预览的功能。具体的实现方式会根据所使用的npm包而有所不同。一般来说,我们可以通过调用相应的函数或方法来实现图片的预览。例如,可以在点击缩略图,调用npm包提供的函数来预览大图,并在预览界面中提供放大、缩小、关闭等操作。 在实现图片预览,我们还可以对预览界面进行定制化的设计。可以设置预览界面的背景色、字体颜色等样式属性,以便更好地符合小程序的整体风格。 总结来说,通过使用npm小程序图片预览的方式,我们可以方便地实现对图片的预览功能,并可以根据实际需求进行定制化的设计。这样,用户在浏览小程序,可以更好地查看和欣赏图片

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值