vue项目使用static目录存放图片解决方案

摘要:
就个人而言,我更喜欢将所有引用的文件放在与src文件相同级别的静态文件中,以便于集成。提醒:在vue项目中,图像通常由添加了哈希值的url加载器处理。如果webpack以静态方式打包,它只会将资源复制到发布目录,不会将小图像优化到base64。如果我们使用静态目录存储图像,打包时会出现一系列路径问题。总之,有两种类型的绝对路径==“开发环境是正常的,但当我们到达生产环境时,我们无法找到所有路径。

我个人喜欢把所有引用文件全部放在打包文件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目录存放图片解决方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇DFS学习http 转下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

解决使用vue打包时vendor文件过大或者是app.js文件很大的问题

这篇文章主要介绍了使用vue打包时vendor文件过大或者是app.js文件很大问题的解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 第一次使用vue2.0开发,之前都是用的angular1.x。在使用vue-cli脚手架打包后(UI用的Element-ui),发现vendor文件很大,将近1M左右。。后来翻阅资料才明白,原来webpac...

java 类变量初始化顺序

假定有一个类定义如下: package com.zhang; public final class Girl { // static代码块1 private static String sex = "female"; // 成员方法代码块1 private String name = "anonymous";...

vue-创建组件的5种方法

Vue组件分为全局组件和局部组件以及Vue 构造器创建组件,统计为5种创建组件的方式 一、效果截图 创建的h1-h5五个组件 组件名称和结构 二、具体的写法如下: 1、全局-直接创建 Vue.component('first', { template: '<h1>第一种创建组件的方法</h1>' }) 2、全局-定义再...

三: vue组件开发及自动化工具vue-cli

一: 组件化开发 1 组件 1: 组件(Component)是自定义封装的功能。在前端开发过程中,经常出现多个网页的功能是重复的,而且很多不同的网站之间,也存在同样的功能。 2: 什么是组件 而在网页中实现一个功能,需要使用html定义功能的内容结构,使用css声明功能的外观样式,还要使用js来定义功能的特效,因此就产生了把一个功能相关的[HTML、cs...

Vue(三)-- class与style绑定、条件渲染、列表渲染、列表的搜索和排序

目录 1.class与style绑定 --1.1class绑定,:class='xxx' --1.2style绑定 2.条件渲染 --2.1v-if和v-else --2.2v-show --2.3比较v-if与v-show 3.列表渲染 --3.1v-for遍历数组 --3.2v-for遍历对象 --练习代码 --3.3为什么要使用:...

Vue笔记:Vue3 Table导出为Excel

1、安装 npm install -S file-saver 用来生成文件的web应用程序 npm install -S xlsx 电子表格格式的解析器 npm install -D script-loader 将js挂载在全局下npm install -S element-ui...