点击上方 前端瓶子君,关注公众号

回复算法,加入前端编程面试算法每日一题群

来源:hetia_az

https://juejin.cn/post/6960939405209141261

前言

一般来说, 平时我们使用图标是一张一张来用, 请求图标的时候也是一张张返回, 如下:

所以为了性能优化, 我们一般采用精灵图的方式来处理图标, 这里我们采用webpack插件 webpack-spritesmith来自动合成精灵图.

起步

从零开始, 我们先创建个vue项目, 这里使用vue-cli3, 下面是创建好的项目:

image.png

安装插件

npm i webpack-spritesmith
复制代码

使用

因为是vue-cli3, 所以为了配置webpack, 我们得在根目录创建一个配置文件vue.config.js 然后在该文件引入使用该插件, 在此之前, 我们打开官方文档看看 https://www.npmjs.com/package/webpack-spritesmith

image.png

按照它的来(官方文档按照webpack的配置写法, 与vue-cli3用些许差异):

// vue.config.js
var path = require('path');
var SpritesmithPlugin = require('webpack-spritesmith');
var templateFunction = function (data) {var shared = '.ico { background-image: url(I) }'.replace('I', data.sprites[0].image);var perSprite = data.sprites.map(function (sprite) {return '.ico-N { width: Wpx; height: Hpx; background-position: Xpx Ypx; }'.replace('N', sprite.name).replace('W', sprite.width).replace('H', sprite.height).replace('X', sprite.offset_x).replace('Y', sprite.offset_y);}).join('\n');return shared + '\n' + perSprite;
};
module.exports = {configureWebpack: config => {config.resolve.modules = ["node_modules", "spritesmith-generated"]let plugins = [new SpritesmithPlugin({src: {cwd: path.resolve(__dirname, 'src/assets/icon'),glob: '*.png'},target: {image: path.resolve(__dirname, 'src/spritesmith-generated/sprite.png'),css: [[path.resolve(__dirname, 'src/spritesmith-generated/sprite.scss'), {format: 'handlebars_based_template'}]]},customTemplates: {'handlebars_based_template': templateFunction,},apiOptions: {cssImageRef: "~sprite.png"}})]config.plugins = [...config.plugins, ...plugins]}
}
复制代码

到这里基本就算完成了, 然后我们来使用一下 运行项目

yarn serve
复制代码

image.png

发现生成了一个文件夹, 点开可以看到精灵图已经合成了, 在组件内使用:

image.png

看到是使用精灵图了

打包

然后再打包看看

yarn build
复制代码

image.png

最后

欢迎关注【前端瓶子君】✿✿ヽ(°▽°)ノ✿

回复「算法」,加入前端编程源码算法群,每日一道面试题(工作日),第二天瓶子君都会很认真的解答哟!

回复「交流」,吹吹水、聊聊技术、吐吐槽!

回复「阅读」,每日刷刷高质量好文!

如果这篇文章对你有帮助,「在看」是最大的支持

》》面试官也在看的算法资料《《

“在看和转发”就是最大的支持

前端工程化之自动合成精灵图相关推荐

  1. gulp自动生成精灵图

    gulp自动生成精灵图 gulp 是基于 Node.js 的一个前端自动化构建工具,主要用来设定程序自动处理静态资源的工作,您可以使用它构建自动化工作流程(前端集成开发环境) 精灵图(sprite)是 ...

  2. 【web前端】CSS高级技巧(精灵图,字体图标,CSS三角,CSS用户界面样式,文字与图片垂直对齐,溢出的文字省略号显示,常见布局技巧,CSS初始化)

    使用课程是黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程_哔哩哔哩_bilibili 目录 一.精灵图 1.为什么需要精灵图 2.精灵图( sprit ...

  3. 前端性能优化 CSS之“精灵图”

    文章目录 1.为什么需要学习精灵图 2. 获取精灵图 3.使用精灵图 示例1: 示例2 4.使用精灵图的核心总结 1.为什么需要学习精灵图 我们都知道一个网站离不开数量非常多的图片,假设每一张图片都要 ...

  4. 前端必备技能之如何制作精灵图

    为什么要用精灵图? 比如京东首页的这些icon,如果每个icon都去请求一个资源.是非常浪费资源的.因为我们浏览器在同一个域名下并发加载的资源(CSS.JS .图片等)数量是有限的. 我们可以将这些i ...

  5. 黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程(精灵图,字体图标,技巧)

    一.基础班学习路线 三.CSS高级技巧 1.精灵图 为什么需要精灵图sprites 精灵图使用(原理) 精灵图使用(代码) 精灵图案例-拼出自己名字 2.字体图标 字体图标产生和优点 字体图标下载 字 ...

  6. 认真学习前端第二周学习笔记(浮动,定位,精灵图,布局)

    文章目录 前言 一.关于浮动 二.关于定位 三.关于精灵图 四.关于布局 总结 前言 提示:这是我在专业培训机构学习的第二周,感觉学习进度好像有一点点慢,不过也还好,能让我们更好的消化消化,今天也是先 ...

  7. web前端基础 html5+css3(九.精灵图,字体图标,css三角,鼠标样式cursor,.轮廓线 outline,vertical-align,文本溢出显示省略号)

    1.精灵图(有效减少服务器介绍和发送请求的次数,提高页面的加载速度) 将网页的小背景图像整合到一张大图中,这样服务器只需要请求一次就可以了 background-position (图片往坐标左边走) ...

  8. CSS第六天-高级技巧(元素隐藏、精灵图、CSS用户界面样式、margi负值作用、CSS三角形)

    ps 今天这是html和css初级部分的最后一份文章了,下次发的就是HTML5和CSS3的一些基础知识.越学到后面,感觉越有意思.到后面可以自己去尝试做一些比较炫酷的动画了,还是蛮期待的. CSS高级 ...

  9. html精灵图的hover状态,css图片精灵图标怎么使用?

    css精灵图(sprite)直译为"CSS精灵",也被称为通常被解释为"CSS图像拼合"."CSS贴图定位"或"CSS图片精灵&q ...

最新文章

  1. pmp考试标准有哪些?
  2. vm虚拟机linux磁盘空间不足,手动扩大
  3. 每个人都有一个“内外引擎”
  4. 我常用的Eclipse插件
  5. 关于HtmlParser中Parser【org.htmlparser.Parser】这个类奇怪的地方...求解释【已获得解释】...
  6. [vijos P1919] 最有活力的鲜花
  7. 天津计算机的专科学校,天津市电子计算机职业中等专业学校
  8. 有了这些,文件批量重命名还需要求助其它工具吗?
  9. 1.5 编程基础之循环控制 10 满足条件的数累加
  10. opengl显示英文_OpenGL-Using Shaders(使用Shader)
  11. coco2d-js 多屏适配相关API
  12. 【ctags/cscope/project安装使用】给神编辑器vim添加新的翅膀
  13. Labview 中的类
  14. 使用Mac的十大最好用神器
  15. C# CAD二次开发之字体替换 文字样式 处理DBText
  16. MeteoInfoLab脚本示例:数据投影-FLEXPART
  17. 夏天计算机自动关机,电脑频繁自动关机,原因可能出在这
  18. 望一望漫天星光(随笔)
  19. 【Python学习 】Python实现的FTP上传和下载功能
  20. zookeeper集群节点个数为什么最好是2n+1

热门文章

  1. 百度SEO教程-利于百度推送工具实现百度快速收录
  2. php+laravel+百度智能云人脸识别详解
  3. 边缘计算系统逻辑架构:云、边、端协同,定义及关系
  4. python中x、y=y、x_浅谈 (x, y) = (y, x)
  5. 部署Kubernetes时出现ImagePullBackOff或ErrImagePull情况
  6. 利用python进行股票分析(四)pandas
  7. 微信点击链接获取对方定位,通过文字图片链接获取对方定位
  8. mysql报08s01的错误_MYSQL报08S01的异常
  9. 【jQuery基础语法】上
  10. JS生成条形码/二维码 barcode.js、JsBarcode