解决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 相关文章推荐
jquery offset函数应用实例
Nov 14 Javascript
Eval and new funciton not the same thing
Dec 27 Javascript
checkbox选中与未选中判断示例
Aug 04 Javascript
jQuery的基本概念与高级编程
May 14 Javascript
使用jQuery在对象中缓存选择器的简单方法
Jun 30 Javascript
Javascript实现字数统计
Jul 03 Javascript
整理Javascript基础语法学习笔记
Nov 29 Javascript
Bootstrap超大屏幕的实现代码
Mar 22 Javascript
深入理解JavaScript和TypeScript中的class
Apr 22 Javascript
JavaScript门道之标准库
May 26 Javascript
微信小程序wx.request的简单封装
Nov 13 Javascript
微信小程序之高德地图多点路线规划过程示例详解
Jan 18 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 和 MySQL 时区的一点总结
2008/03/26 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
全面了解python字符串和字典
2016/07/07 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
Python中的TCP socket写法示例
2018/05/11 Python
python事件驱动event实现详解
2018/11/21 Python
Python底层封装实现方法详解
2020/01/22 Python
python中数字是否为可变类型
2020/07/08 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
业务内勤岗位职责
2014/04/30 职场文书
党员承诺书怎么写
2014/05/20 职场文书
公司授权委托书范文
2014/08/02 职场文书
公务员考察材料范文
2014/12/23 职场文书
旅游投诉信范文
2015/07/02 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
深入理解python多线程编程
2021/04/18 Python