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  存放业务接口




相关文章
|
安全 前端开发 Java
Spring Security系列教程25--解决Spring Security环境中的跨域问题
前言 上一章节中,一一哥 给各位讲解了同源策略和跨域问题,以及跨域问题的解决方案,在本篇文章中,我会带大家进行代码实现,看看在Spring Security环境中如何解决跨域问题。 一. 启用Spring Security 的CORS支持 1. 创建web接口 我先在SpringBoot环境中,创建一个端口号为8080的web项目,注意这个web项目没有引入Spring Security的依赖包。然后在其中创建一个IndexController,定义两个测试接口以便被ajax进行跨域访问。 @RestController public class IndexController {
1835 1
|
前端开发 开发工具 git
Git报错处理:解决git commit时的lint-staged错误提示。
极好的,你对Git的lint-staged出了一个令人头疼的问题。让我们一起钻研一下,找到一种方法来解决一切。 首先,我们要确定你是在做什么操作时候遇到了问题。lint-staged通常在我们运行 git commit 时启动,它做的工作是在你提交之前运行一些指定的命令检查你的代码。当lint-staged报错,多半是因为检查未通过,或者它试图运行的命令存在问题。 让我们以一种图解的方式来描绘一下这个过程,就像canvas上的画面那样。git正在温柔的将你的修改捆绑起来,准备提交。突然,lint-staged走了出来,并开始盘问着Git,寻找可能的错误。如果lint-staged找到了什么
1196 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)
3097 0
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
1155 6
|
开发框架
threejs做特效:实现物体的发光效果-EffectComposer详解!
【8月更文挑战第7天】实现物体的发光效果-EffectComposer详解!
2976 6
threejs做特效:实现物体的发光效果-EffectComposer详解!
|
JavaScript
【vue3】vue3中路由hash与History的设置
【vue3】vue3中路由hash与History的设置
990 0
|
移动开发 前端开发 安全
iframe实现跨域通信的方法
iframe实现跨域通信的方法
790 6
|
存储 JavaScript 小程序
高德地图实现点聚合功能的详细步骤加截取地图图片 (附源码)
高德地图实现点聚合功能的详细步骤加截取地图图片 (附源码)
1600 0
|
Web App开发 缓存 安全
HttpOnly的笔记
`HttpOnly`是Cookie的一个属性,用于防止JavaScript访问Cookie值,增强安全性。服务器通过`Set-Cookie`设置,如`Set-Cookie: name=value; HttpOnly`。在Tomcat 7.0.x及以上版本,可在`web.xml`配置`&lt;http-only&gt;true&lt;/http-only&gt;`。检查HttpOnly是否生效,可使用Chrome调试器查看Cookies,HttpOnly列有对勾表示生效。
991 0
|
前端开发 JavaScript 定位技术
高德地图实现-自定义信息窗+窗体点击事件
高德地图实现-自定义信息窗+窗体点击事件
1820 0