当你在JavaScript、CSS或 *.vue 文件中使用相对路径,必须以.
开头引用一个静态资源,该资源将被webpack处理。 如果你把静态资源放在 public文件中,则不会被webpack处理。
<img src="/src/assets/image/logo.png" >
// 渲染后的html
<img data-v-780434df src="/src/assets/image/logo.png" >
// 这个图片是无法展示的,因为编译后文件以及不在src/assets/image文件夹下了
.
开头,将会被看作相对的模块依赖<img src="./assets/image/logo.png" >
// 渲染后
<img data-v-704534df src="/static/img/logo.lere34534.png" >
<img src="@/assets/image/logo.png" >
// 渲染后
<img data-v-704534df src="/static/img/logo.lere34534.png" >
<img src="~@/assets/image/logo.png" >
// 渲染后
<img data-v-704534df src="/static/img/logo.lere34534.png" >
<img src="~[npm包名]/assets/image/logo.png" >
// 渲染后
<img data-v-704534df src="/static/img/logo.lere34534.png" >
** 通过webpack的处理并获得以下好处:**
以下情况考虑使用 public 文件夹:
// vue.config.js
module.exports = {
publicPath: process.en.NODE_ENV === ‘production‘ ? ‘/cart/‘ : ‘/‘
}
<%= BASE_URL %>
设置链接前缀<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<template>
<img :src=`${publicPath}image/logo.png` >
</template>
<script>
data() {
return {
publicPath: process.env.BASE_URL
}
}
</script>
原文:https://www.cnblogs.com/yuxi2018/p/14639246.html