我个人喜欢把所有引用文件全部放在打包文件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目录存放图片的解决方案,如果你有其他好的建议可以联系我哦!

vue项目使用static目录存放图片解决方案的更多相关文章

  1. Vue项目部署遇到的问题及解决方案

    写在前面 Vue-Router 有两种模式,默认是 hash 模式,另外一种是 history 模式. hash:也就是地址栏里的 # 符号.比如 http://www.example/#/hello ...

  2. vue项目 webpack打包后,图片路径是绝对路径

    vue项目,使用webpack打包,虽然在全局把路径改成了相对的路径,但是图片引用的路径还是异常的,解决办法如下: 1.config文件夹下index.js中: assetsPublicPath:&q ...

  3. vue项目开发基本目录结构

    § 目录结构 . ├── build/ # Webpack 配置目录 ├── dist/ # build 生成的生产环境下的项目 ├── src/ # 源码目录(开发都在这里进行) │ ├── ass ...

  4. vue项目中,单页图片过多,使用懒加载

    最近做项目,一页图片很多,加载的时候效果很差. 通过学习借鉴其他大神的方法,使用了插件vue-lazyload,使用这个插件,界面更美观了,加载的效果好起来. 安装 npm i vue-lazyloa ...

  5. npm 创建vue项目(指定目录进行创建)

    1.先安装node,js和npm 检验mpm 和node的方式是 npm -v  / node -v 2.安装最新版本 npm install @vue/cli -g 意外安装老版本的是代码  npm ...

  6. 怎样理解 Vue 项目的目录结构?

      Vue 项目的目录结构如下, 我们将会在后面逐个去了解它们的作用: 01. build - 存储项目构建相关的代码, 比如 webpack. 02. config - Vue 的配置目录,包括端口 ...

  7. vue项目搭建及创建、目录结构、项目启动、全局配置

    Vue项目环境搭建 """ node ~~ python:node是用c++编写用来运行js代码的 npm(cnpm) ~~ pip:npm是一个终端应用商城,可以换国内 ...

  8. element-ui和npm、webpack、vue-cli搭建Vue项目

    一.element-ui的简单使用 1.安装 1. npm 安装 推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用. npm i element-ui -S 2. CDN ...

  9. vue-cli搭建vue项目(单页面应用)

    1.全局安装vue-cli 2.创建项目: vue init webpack test test是项目名称,会在当前工作目录下新建一个test文件夹 接下来会手动选择一些配置 除了Setup unit ...

随机推荐

  1. Tomcat组件

    Tomcat组件 tomcat常用组件 Tomcat的组织结构 Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的给件是CATALINA SERVLET容器,其他的组件按照一定 ...

  2. KeepAlived的配置

    KeepAlived的相关配置 KeepAlived 配置 参考帮助 man keepalived.conf 配置文件组件部分: top hierachy(层次) global configurati ...

  3. 大神给你分析HTTPS和HTTP的区别(转)

    http://www.php100.com/html/it/biancheng/2015/0209/8582.html 今天在做雅虎的时候,发现用第三方工具截取不到客户端与服务端的通讯,以前重来没碰到 ...

  4. P3990 [SHOI2013]超级跳马

    传送门 首先不难设\(f[i][j]\)表示跳到\((i,j)\)的方案数,那么不难得到如下转移 \[f[i][j]=\sum\limits_{k=1}^{\frac n2}f[i-2k+1][j-1 ...

  5. C#和C++的区别(一)

    C#特性 1.指针可以有++.--运算,引用不可以运算: 2.类或结构的默认访问类型是internal 类的所有成员,默认是private 3.属性:用于定义一些命名特性,通过它来读取和写入相关的特性 ...

  6. Java编程思想读书笔记_第三章

    本章提到的关于==的部分,一个完整的实验如下: class Test { public static void main(String[] args) { Integer i = new Intege ...

  7. BPI-MI1刷Andorid的启动卡之后上网的步骤(以太网&&WIFI)

    BPI-MI1刷Andorid的启动卡之后上网的步骤(以太网&&WIFI) 2017/9/19 16:57 01刷Android的默认启动界面.png 02打开英文模式下的设置Sett ...

  8. Android学习笔记(五)Android框架

    一.技术结构图 注:开发者最需要关注的是第三层“Application Framework” 二.基于组件的应用程序开发 1)Activity 一个Activity就是一个界面,负责和用户交互. 2) ...

  9. Farseer.net轻量级开源框架 中级篇:自定义配置文件

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问 ...

  10. Xcode 动态库及Framework 安装路径设置

    使用Xcode开发动态库及Framework时,需要为其设置Install path.在设置Install path时,可能会使用到以下几个路径: 1)绝对路径:               绝对路径 ...