我个人喜欢把所有引用文件全部放在打包文件src的同级文件static文件内部,方便整合。

提醒:vue项目中正常情况下图片是由 url-loader 处理,加入了hash值,如果放到static里面webpack打包后只会把资源复制到发布目录而不会把小图片优化为base64。

如果我们使用static目录存放图片会以为打包而产生一系列路径问题

总结来说有以下两种

使用绝对路径

===》 开发环境正常,但是到了生产环境因为就会全部找不到路径。

  • 原因:使用绝对路径打包好依然是绝对路径,但是生产环境没有设置根目录所有无法使用。

  • 解决方法:在服务器上设置SCP,即可使用绝对路径。

<template>
<div>
<h1>HTML直接使用</h1>
<img src="/static/images/b1.jpg" alt="">
<h1>JS使用</h1>
<img :src="imgUrl" alt="">
<h1>css中使用</h1>
<div class="bg"></div>
</div>
</template> <script>
export default {
data () {
return {
imgUrl: '/static/images/b2.jpg'
}
}
}
</script>
<style scoped>
.bg{
width: 750px;
height: 600px;
background:url('/static/images/b3.jpg');
}
</style>

使用相对路径

===》开发环境也正常,但是到了生产环境只有HTML里面的图片资源正常。JS和CSS中都找不到路径

原因:HTML里面的图片路径会经过vue转换路径所有正常显示,js因为没有处理而找不到路径。所以我们直接帮它处理即可

解决方法:

  • HTML中使用相对路径让vue正常打包转换路径;

  • JS中使用直接设置路径为打包后应该显示的路径 ./static/images/b2.jpg 即可正常显示

  • CSS中使用因为打包后代码都是在 css-- * .css文件中,所以我们使用 ../../static/images/b3.jpg。同时还需要修改两个地方的设置

【build/utils.js文件】

if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader',
publicPath: '../../' //新增这一句,作用是设置打包过程中提取CSS的方法
})
} else {
return ['vue-style-loader'].concat(loaders)
}

【config/index.js 文件】

// 找到build
build: {
assetsSubDirectory: 'static',
assetsPublicPath: '/',
}
// 修改为
build: {
assetsSubDirectory: './static',// 子目录---解决css相对路径的问题
assetsPublicPath: './', //资源专用路径---解决JS路径问题
}

【使用演示】

<template>
<div>
<h1>HTML直接使用</h1>
<img src="../../static/images/b1.jpg" alt="">
<h1>JS使用</h1>
<img :src="imgUrl" alt="">
<h1>css中使用</h1>
<div class="bg"></div>
</div>
</template> <script>
export default {
data () {
return {
imgUrl: './static/images/b2.jpg'
}
}
}
</script>
<style scoped>
.bg{
width: 750px;
height: 600px;
background:url('../../static/images/b3.jpg');
}
</style>

以上就是我整理的使用static目录存放图片的解决方案,如果你有其他好的建议可以联系我哦!

最新文章

  1. Apple、Google、Microsoft的用户体验设计原则
  2. 20161022 NOIP模拟赛 T1 解题报告
  3. IE6中内容高度比高级浏览器高的解决办法
  4. Hadoop 之 MapReduce 框架演变详解
  5. C# 正则表达式小坑 -- not enough
  6. emacs+ensime+sbt打造spark源码阅读环境
  7. How systems researchers build systems
  8. 第27讲 UI组件之 ScrollView与底部动态添加数据
  9. 运行于64操作系统上的C#客户端通过WCF访问Oracle数据库不兼容问题
  10. 采用curl库
  11. Linux-Zabbix 邮件报警设置
  12. 手写简单的jq雪花飘落
  13. sqlserver 表循环-游标、表变量、临时表
  14. mysql 操作sql语句 目录
  15. console输出选择器的问题
  16. Linux命令:ssh-add
  17. python永久添加第三方模块,PYTHONPATH的设置
  18. linux 系统网卡无法识别,缺少驱动
  19. JS 原生JS 判断滚动条滑动到底部(兼容苹果safari)
  20. 首次接触XAMPP,端口被占用困恼

热门文章

  1. Linux day01(二)虚拟机快照和克隆的用法介绍
  2. Unity项目 - Boids集群模拟算法
  3. 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 Overlapping Rectangles
  4. 数学/思维 UVA 11300 Spreading the Wealth
  5. MySQL replace into 用法(insert into 的增强版)
  6. 378 Kth Smallest Element in a Sorted Matrix 有序矩阵中第K小的元素
  7. cloudera-agent启动File not found : /usr/sbin/cmf-agent解决办法(图文详解)
  8. SqlServer知识点-操作xml
  9. App保持登录状态的常用方法
  10. 安装ipython notebook及基本命令(快捷键)