解决vuecli3中img src 的引入问题


Posted in Javascript onAugust 04, 2020

最近公司要做一个在线ps 的项目 但是后台没写完, 我在用本地图片上传预览的时候 发现图片不能显示, 解决的办法 是

//页面的结构
 <div class="workspace" >
   <img :src='img'>
 </div>
export default {
 data() {
 return {
  img:require('../../assets/fapiao.jpeg'),
  //这里只能使用require的方式去使用 如果img 是数组, 就用 
  //[require('../../assets/fapiao1.jpeg'),
  //require('../../assets/fapiao2.jpeg'),
  //require('../../assets/fapiao3.jpeg').....]
  fileList: []
 };
 },
}

之前我用了绝对路径和 相对路径 都没有办法实现, 后来查官方文档是因为没有存放静态的asset 文件了 ,静态现在存放在public 的里面. 但是我在public里面去创建一个img 的文件,去放置图片,依然不可以. 所以 三种办法里面 只有require 使用vuecli3 ,

如果大家有好的解决办法 可以一起分享

1、在模板中直接引入图片资源(这种一般是@ 或者./ 去引入)

2、将图片资源放在static文件夹下

3、图片资源在assets文件夹下,data中必须用require加载,否则会当成字符串来处理

(我自己目前就是放在assets 里面. 因为是本地上传的 在做假数据的时候准备做一个预览,或者说以后的默认图片就是它了)

第二种,只要给图片放在static文件夹下即可:原因如下

这里在使用vuecli脚手脚构建工具,目录下会生成一个static目录,表示的是静态目录,推荐大家将img 存放在这个目录下,那么在webpack编译以后,依旧是可以获取到这个目录下的路径,这样就解决了路径不符而导致图片加载不出来的问题!当然项目中用的一般都是绝对路径,少数图片的话,这种方式挺好

但是 重点: vuecli3 没有static 啊!!!

=======补充

<ul>
   <li v-for="(item,index) in src" :key="index" @click="jump">
   <img :src="item" alt>
   </li>
 </ul>
export default {
 data() {
 return {
  centerDialogVisible: false,
  form: {
  LoginName: "",
  PassWord: ""
  },
  rules: {
  LoginName: [
   { required: true, message: "请输入用户名", trigger: "blur" }
  ],
  PassWord: [{ required: true, message: "请输入密码", trigger: "blur" }]
  },
  message: "",
  src: [
  require("../assets/imgs/001.jpg"),
  require("../assets/imgs/002.jpg"),
  require("../assets/imgs/003.jpg"),
  require("../assets/imgs/004.jpg"),
  require("../assets/imgs/005.jpg")
  ]
 };
 },

完美的动态绑定, Gong智障继续加油 哈哈哈哈~!!!

再这个页面上接着补充一个 如果router-link 去页面跳转的怎么加配置

<ul>
   <li v-for="(item,index) in src" :key="index" @click="jump(item.address)" :plain="true">
   <img :src="item.img" alt>
   </li>
  
 </ul>
export default {
 data() {
 return {
  centerDialogVisible: false,
  src: [
  { img: require("../assets/imgs/001.jpg"), address: "taxplayerinfo" },
  { img: require("../assets/imgs/002.jpg"), address: "taxsheet" },
  { img: require("../assets/imgs/003.jpg"), address: "search" },
  { img: require("../assets/imgs/004.jpg"), address: "home" }
  ]
 };
 },
 methods: {
 jump(address) {
  this.$router.push({ name: address });
 }
 }
};

补充知识:vue-cli3.0 图片放在public,vue打包部署非根目录时,图片引入错误

解决办法:

方法1. 修改nginx 配置,以部署目录espace为例

upstream a.xx.com{
 server 127.0.0.1:8081;
}

server {
 listen 80;
 server_name a.xx.com;
 location /{
  proxy_pass http://a.xx.com;
 }
 location ^~/images/ {
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:8001/images/;
 }
 location ^~/espace/ {
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:8001/;
 }
}

方法2. 修改文件目录,将文件放于src/assets/images

vue.config.js

let path = require('path')

function resolve(dir) {
 return path.join(__dirname, dir)
}
module.exports = {
 chainWebpack: config => {
  config.resolve.alias.set('@', resolve('src'));
 }
}

图片引入

<img src="@/assets/images/icon_file.png">
.check_box a.active::after {
 background: url(~@/assets/images/check_box.png) no-repeat center;
}

以上这篇解决vuecli3中img src 的引入问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中的原型和继承详解(图文)
Jul 18 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
Apr 06 Javascript
js获取滚动距离的方法
May 30 Javascript
Vue中fragment.js使用方法详解
Mar 09 Javascript
借助node实战JSONP跨域实例
Mar 30 Javascript
基于jQuery解决ios10以上版本缩放问题
Nov 03 jQuery
使用JavaScript中的lodash编写双色球效果
Jun 24 Javascript
JavaScript引用类型Function实例详解
Aug 09 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
Nov 10 Javascript
微信小程序canvas截取任意形状的实现代码
Jan 13 Javascript
JS实现可视化音频效果的实例代码
Jan 16 Javascript
浅谈Vue 函数式组件的使用技巧
Jun 16 Javascript
简介JavaScript错误处理机制
Aug 04 #Javascript
vue 出现data-v-xxx的原因及解决
Aug 04 #Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
Aug 04 #Javascript
vue 实现根据data中的属性值来设置不同的样式
Aug 04 #Javascript
解决Vue中使用keepAlive不缓存问题
Aug 04 #Javascript
vue根据条件不同显示不同按钮的操作
Aug 04 #Javascript
如何在Vue.JS中使用图标组件
Aug 04 #Javascript
You might like
php文件怎么打开 如何执行php文件
2011/12/21 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
python回调函数的使用方法
2014/01/23 Python
Flask-Mail用法实例分析
2018/07/21 Python
python 基于opencv操作摄像头
2020/12/24 Python
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
KOHLER科勒美国官网:国际著名卫浴橱柜领先品牌
2020/06/27 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
中学生逃课检讨书
2015/02/17 职场文书
暂住证明怎么写
2015/06/19 职场文书
公司宣传语大全
2015/07/13 职场文书
教师节校长致辞
2015/07/31 职场文书
检举信的写法
2019/04/10 职场文书
小学生六年级作文之关于感恩
2019/08/16 职场文书
一条慢SQL语句引发的改造之路
2022/03/16 MySQL