vue-build之后图片不显示-图片路径的写法

简介: build之后 直接运行html文件,图片加载不出来的问题新旧版本用法区别

1.前言


build之后 直接运行html文件,图片加载不出来的问题

新旧版本用法区别


2. 先说目前主流的 vue.config.js版本的解决方法


vue.config.js 这个文件需要自己 在项目根目录创建哦

公共资源路径 publicPath需要设置下

下面的 生产环境 开启压缩 可以配置


const path = require("path");
module.exports = {
  publicPath: './',
   // 生产环境,开启js\css压缩
    if (process.env.NODE_ENV === 'production') {
        config.plugin('compressionPlugin').use(new CompressionPlugin({
          test: /\.(js|css|less)$/, // 匹配文件名
          threshold: 10240, // 对超过10k的数据压缩
          deleteOriginalAssets: false // 不删除源文件
        }))
    }
}

npm run build之后

打开 dist目录下的 html文件就可以显示图片了

public 根据环境配置


publicPath:process.env_NODE_ENV ==="production"? "/shop/" :"/服务器地址文件夹名"

使用方式

自带的public/index.html

<%= BASE_URL %>ejs模板类似


<link rel="icon" href="<%= BASE_URL %>favicon.ico">



3. 旧版改法


1V0](`Y%U$Y)`0IEOLF@19E.png


4.  图片相关


js,css或者vue文件中,使用相对路径(必须以.开头)引用一个静态资源时,该资源会被webpack处理

@作为一个模块请求解析,cli中默认 @表示 src目录的别名

4.1 如果URL以 . 开头会作为一个相对模块请求来解析,并基于文件系统相对路径

想要打包后的图片显示 一般需用 到 require

引用


// 方式一: es6  转成base64位图片使用
import es6Img1 from "./img/4.jpg"
// 方式二:
let es6Img2 = require("./img/5.jpg")

data 直接使用


es6Img3:require("./img/4.jpg"),
      assert1:require("@/assets/1.jpg"),
      assert2:require("../../assets/4.jpg"),

public 直接用

路径切换成 自己的路径就好


<img src="../../../public/5.jpg" alt="public用" />


4.2注意

如果 URL是一个~ 开头,会作为一个模块请求被解析,

甚至可以引用依赖包中的资源


<img width="200" src="~X-npm-package.jpg" />


4.3注意

如果 URL是一个绝对路径,它将会被保留不变


<img width="200" src="/assets/img/2.jpg" alt="直接使用" />
    <img width="200" src="http://image.com.xx/img/2.jpg" " />



5. 上面牵扯到几个文件夹


1.public

这个文件夹 不参与 打包,webpack管不了,类似于 之前脚手架当中的 static

目录下的文件会被直接复制到最终打包的目录,类似于一些公共不变的东西 ,例如我之前项目中的电话条SDK,一些音视频,iconfont也行

结论 这个目录放不会变的 文件

2. assets

这个目录放可能会变动的文件

目录中的文件会被 webpack处理解析为模块,只支持相对路径的形式

因为这个可以变动 所以这里也可以分化出不同的子目录

例如 assets/util  存放工具类的js的;

assets/api  存放业务接口




相关文章
|
前端开发 开发工具 git
Git报错处理:解决git commit时的lint-staged错误提示。
极好的,你对Git的lint-staged出了一个令人头疼的问题。让我们一起钻研一下,找到一种方法来解决一切。 首先,我们要确定你是在做什么操作时候遇到了问题。lint-staged通常在我们运行 git commit 时启动,它做的工作是在你提交之前运行一些指定的命令检查你的代码。当lint-staged报错,多半是因为检查未通过,或者它试图运行的命令存在问题。 让我们以一种图解的方式来描绘一下这个过程,就像canvas上的画面那样。git正在温柔的将你的修改捆绑起来,准备提交。突然,lint-staged走了出来,并开始盘问着Git,寻找可能的错误。如果lint-staged找到了什么
1260 24
|
XML Java 关系型数据库
IDEA 报错: java.sql.SQLException: Access denied for user ‘root ‘@‘localhost‘ (using password: YES)
IDEA 报错: java.sql.SQLException: Access denied for user ‘root ‘@‘localhost‘ (using password: YES)
3197 0
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
1237 6
|
JavaScript
【vue3】vue3中路由hash与History的设置
【vue3】vue3中路由hash与History的设置
1060 0
Vue3日期选择器(DatePicker)
该组件基于 **@vuepic/vue-datepicker@9.0.1** 进行二次封装,简化了日常使用。除范围和年选择器外,其他日期选择均返回格式化的字符串。提供了多种自定义设置,如日期选择器宽度、模式、格式等,并支持时间选择和“今天”按钮展示。详细配置及更多功能请参考[官方文档](https://vue3datepicker.com/installation/)。组件已集成所有原生属性,并支持主题颜色自定义。 示例代码展示了如何创建和使用日期选择器组件,包括基本使用、禁用日期、日期时间选择器、范围选择器等多种场景。更多功能和样式可通过官方文档了解。
4121 2
Vue3日期选择器(DatePicker)
|
JavaScript
js删除数组中已知下标的元素
js删除数组中已知下标的元素
537 4
|
SQL NoSQL 关系型数据库
13 秒插入 30 万条数据,这才是批量插入正确的姿势!
【8月更文挑战第9天】在数据处理和数据库管理中,高效批量插入数据是一项至关重要的技能。无论是大数据分析、日志处理还是业务数据快速导入,高效的批量插入能力都能显著提升系统性能和用户体验。今天,我们就来深入探讨如何在极短时间内(如13秒内)向数据库批量插入30万条数据,分享那些被验证过的高效技术和最佳实践。
1693 0
|
JavaScript
vue 动态组件【详解】component :is
vue 动态组件【详解】component :is
958 0
|
存储 JavaScript 小程序
高德地图实现点聚合功能的详细步骤加截取地图图片 (附源码)
高德地图实现点聚合功能的详细步骤加截取地图图片 (附源码)
1687 0