这篇文章主要整理一下自己在使用 webpack 结合 vuejsreactjs 开发过程中图片的处理方法。

我的需求

项目打包之后(假定输出目录为 dist),除了 index.html,将所有的静态资源上传至 cdn,而并非打包之后所有静态资源都在应用服务器上。

index.html 中的图片

因为是 SPA,模版页面唯一要处理的图片就是 favicon,这个资源在 IE 10 及以下浏览器只需要在 dist 根目录下存在 favicon.icon 文件(名称、后缀固定)即可,这种方式已经废弃,更好的做法是使用 link 标签引用,如:

<link rel="icon" sizes="192x192" href="/path/to/icon.png">
复制代码

处理这个图片,我尝试了三个方法:

1.html-webpack-plugin 的 favicon 属性配置

不适合我。

它会将文件输出至 dist 根目录下,与 index.html 同级,引用的是本地图片,而非 cdn 图片。

2.favicons-webpack-plugin

不适合我。

很强大,能根据你给的图片,生成所有类型的 icon 图标,问题有两个:首先是依赖了 phantomjs,墙外的站点,你懂得;再者引用的依旧是本地图片。

组件实现

适合我。

vuejs 的 vue-head 组件,reactjs 的 react-helmet 组件,可以配置 link 方式的 favicon。图片打包上传 cdn 之后,页面的图片地址也为 cdn 地址。

其它

如果你的模版页面有其他诸如 src 图片引用,可参考 html-withimg-loader

页面 Head 大全

vuejs 项目中图片处理

前提:使用 vue-loader v15,webpack 配置好 url-loaderalias

module.exports = {// ...其他配置modules: {rules: [{test: /\.(jpe?g|png|gif)(\?.*)?$/,use: 'url-loader?limit=1024&name=statics/img/[name]-[hash:5].[ext]',exclude: /node_modules/,},]},resolve: {alias: {Images: path.resolve('public', 'statics', 'img'),},},// ...其他配置
}
复制代码

template 中使用

<img src="~Images/logo.png">
<img :src="require('Images/logo.png')"> // 注意 v-bind
复制代码

有个问题我目前没有解决(精简代码),还请大神指教:

// 无效,提示无法找到这个资源
<img :src="require(`${img}`)">data() {img: 'Images/logo.png'
}
复制代码
// 有效
<img :src="require(`Images/${img}`)">data() {img: 'logo.png'
}
复制代码

已解决,官网对 require 的说明: A context is created if your request contains expressions, so the exact module is not known on compile time.

样式表中使用

貌似无法使用 alias,只能使用 ~ 和相对路径:

body {background: url(Images/logo.png); // alias,错误background: url(/Images/logo.png); // 有效,但是引用本地文件background: url(~Images/logo.png);background: url(../../statics/img/logo.png);background: url(./../../statics/img/logo.png);
}
复制代码

以 . 开头,将会被看作相对的模块依赖,并按照你的本地文件系统上的目录结构进行解析

reactjs 中图片处理

前提:webpack 配置好 url-loaderalias

使用

不管是组件中还是样式表中,都可以使用 alias 和相对路径:

require('Images/logo.png');
require('../../statics/img/logo.png');
require('./../../statics/img/logo.png');
复制代码
body {background: url(Images/logo.png);background: url(../../statics/img/logo.png);background: url(./../../statics/img/logo.png);
}
复制代码

最后

./ 可有可无,相对路径是以当前的文件为基础,注意 ../ 层数问题;不要以 / 开头,因为最终都是引用的本地图片。 如有谬误,恳请斧正。

转载于:https://juejin.im/post/5b359656e51d4558d9235f1f

webpack结合reactjs、vuejs项目中图片处理相关推荐

  1. c# 如何找到项目中图片的相对路径

    c# 如何找到项目中图片的相对路径 string path = System.Environment.CurrentDirectory;//非Web程序 if (System.Environment. ...

  2. SpringBoot项目中图片加载失败

    SpringBoot项目中图片加载失败 这个原因有很多,比如你的拦截器,过滤了静态资源. 如果你感觉自己的前端代码没有问题,配置也没有问题,可能是由于你后期导入的图片还没有被加载到target文件夹中 ...

  3. SpringBoot项目中图片的引用

    问题描述:在SpringBoot项目中需要在CSS样式文件中引入图片给某个元素设置样式 解决办法: body{background-image: url("../image/580.jpg& ...

  4. vue-cli+webpack在生成的项目中使用bootstrap的方法

    在一个html页面中加入bootstrap是很方便,就是一般的将css和js文件通过Link和Script标签就行.那么在一个用vue-vli生成的前端项目中如何加入?因为框架不一样了,略微要适应一下 ...

  5. web项目中图片上传

    最近一直在做一个项目,但是有好多的东西都是第一次碰到,上网上查了很多资料,但是由于基础薄弱,只是堪堪了解一点. 我所想实现的是,在后台页面上传图片,存放路径到数据库中,而前台页面通过数据库可以查到,然 ...

  6. vue项目中图片地址生成二维码

    前言 一.图片地址生成二维码 二.使用步骤 1.安装插件 2.执行方法(点击图片之后,弹框显示并且显示二维码) 总结 前言 vue中点击图片生成二维码,利用的是qrcode插件,在需要使用的页面中引入 ...

  7. php中怎么让图片没有缓存,关于项目中图片缓存的问题

    之前用的是iis所以可能没有这些问题,后来换了nginx之后发现图片缓存问题很严重,本项目用的是thinkphp5框架: 浏览器.runtime.session.cookie.加参数,后台,所有缓存都 ...

  8. java web图片旋转_修正web项目中图片旋转方向

    # 使用 imagemagick 旋转 查看照片 EXIF 信息,Exif 中的图片旋转信息储存在``Orientation``中. ``` identify -verbose xxx.jpg ``` ...

  9. 解决Web项目中图片无法显示问题

    问题描述 在web目录下创建了images文件夹用来存放图片,在web目录再创建HTML文件,该文件中的img标签引用了images里面的图片,但是启动服务器时,页面上的图片无法显示. 解决问题  将 ...

最新文章

  1. vue 数组删除 dome没更新_详解Vue响应式原理
  2. MVVM设计模式之精髓简化
  3. Struts2_day02--封装数据到集合里面
  4. 强大的Web日志分析工具_AWSTATS 应用实例
  5. cisco交换机Telnet配置
  6. fedora上ARM-LINUX-GCC 编译器安装
  7. Discuz x 默认模板文件目录说明
  8. matlab向量的模_基于MATLAB使用矩阵方法求解一维定态薛定谔方程
  9. 火币网的macd怎么算的_黄金投资中MACD的计算方式
  10. R语言笔记:快速入门
  11. bash下: () {} [] [[]] (())的解释
  12. electron、node
  13. 【最大流】牛棚安排(jzoj 1259)
  14. python每秒20个请求_使用Python每秒百万个请求
  15. mysql编程语法_MYSQL语法(一)
  16. 导览系统定制开发_联联周边游系统源码定制开发平台方案
  17. android 安全学习从何入手?
  18. python是什么意思中文、好学吗-Python的前景和Python好不好学呢?
  19. 支持MySql的数据库自动分表工具DBShardTools发布
  20. HDU1427 速算24点

热门文章

  1. apache服务器的配置文件httpd.conf中有很多内容,请解释如下配置项:
  2. gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解
  3. 常考数据结构与算法:求二叉树的层序遍历
  4. java之前后端交互原理
  5. python一:hello world
  6. C#学习笔记—了解C#
  7. [20171109]缓存命中率神话.txt
  8. 除了组件超配光伏效率还能如何提升?
  9. UEditor在线编辑器使用记录
  10. nginx+awstats多域名日志分析2