这是一个很简单的方案。嗯,是真的。

为什么要这么做?

在移动Web蓬勃发展的今天,有太多太多的应用需要让用户在移动Web上传图片文件了,正因如此,我们有些困难必须去攻克:

  1. 低网速下上传进度缓慢,用户体验差

  2. 高并发下,后台处理较大的上传文件压力大

  3. 或许有更多...

在攻克上面的一些困难时,我们也可以给自己一些疑问:

  1. 真的有必要保存用户上传的原图吗?

  2. 用户还能等多久?

  3. 或许还有更多...

结合上面的一些困难和疑问,再结合我们实际的案例,我们或许可以这样做 —— 在用户上传图片时,图片被提交到后台之前,就对图片进行压缩处理。图片文件大小减小后,上传速度自然会提升,在同样的并发下,后台处理的速度也会得到提升,用户体验得到提升。

有童鞋可能会说,为什么不使用一些主流CDN的表单功能,直接把文件上传到CDN去?当然,完全可以选择那种方案,我只是在众多的方案中选择了一个来用而已,又或者说这是程序员的天性?

准备

上面已经说了 “在用户上传图片时,图片被提交到后台之前,就对图片进行压缩处理。”,那我们马上准备下各种工具吧:

  1. localResizeIMG(核心,用于在前端对图片进行压缩)

  2. Vue.js(处理前端的数据,展现逻辑)

  3. Bootstrap(还要我多说?)

怎么做?

  1. 上传项目变更后,使用localResizeIMG进行压缩

  2. 把数据通过自己期望的方式提交到后台

localResizeIMG在调用时,就可以指定压缩后图片的宽度高度以及质量(详细参考文档),至于要怎么把数据提交到后台,可以参考该库的wiki中提到的方案,一切都很简单。

演示地址
这个例子的仓库地址

本文的解决方法并不是唯一,也不一定是最好,在使用相关的框架/库时遇到的问题,可以去相应的Github仓库查看issue或者wiki。

本文转载于:猿2048→https://www.mk2048.com/blog/blog.php?id=hjc2ik2achj

结合Vue.js的前端压缩图片方案的更多相关文章

  1. 公司内部技术分享之Vue.js和前端工程化

    今天主要的核心话题是Vue.js和前端工程化.我将结合我这两年多的工作学习经历来谈谈这个,主要侧重点是前端工程化,Vue.js侧重点相对前端工程化,比重不是特别大. Vue.js Vue.js和Rea ...

  2. 使用webpack+vue.js构建前端工程化

    参考文章:https://blog.csdn.net/qq_40208605/article/details/80661572 使用webpack+vue.js构建前端工程化本篇主要介绍三块知识点: ...

  3. Vue.js到前端工程化

    b站视频地址:黑马程序员Vue.js到前端工程化(webpack打包,以及Vue-cli3和Element-UI的使用) vue学习系列 1.vue概述 2.vue基本使用 3.vue模板语法 4.指 ...

  4. Vue.js高效前端开发知识 • 【目录】

    持续更新中- 章节 内容 实践练习 Vue.js高效前端开发 • (实践练习) 第1章 Vue.js高效前端开发 • [ 一.初识Vue.js ] 第2章 Vue.js高效前端开发 • [ 二.Vue ...

  5. Vue前端压缩图片

    一.在组件包下新建compressImage.js // 压缩图片 // eslint-disable-next-line no-unused-vars export function compres ...

  6. js使用canvas在前端压缩图片

    HTML代码: <input id="file" type="file"> JS代码: var eleFile = document.querySe ...

  7. antdv的Upload组件实现前端压缩图片并自定义上传功能

    Ant Design of Vue的Upload组件有几个重要的api属性: beforeUpload: 上传文件之前的钩子函数,支持返回一个Promise对象. customRequest: 覆盖组 ...

  8. 从Vue.js窥探前端行业

    近年来前端开发趋势 1.旧浏览器逐渐淘汰,移动端需求增加: 旧浏览器主要指的是IE6-IE8,它是不支持ES5特性的:IE9+.chrome.sarafi.firefox对ES5是完全支持的,移动端大 ...

  9. js上传压缩图片

    原文链接:http://blog.csdn.net/iefreer/article/details/53039848 手机用户拍的照片通常会有2M以上,这对服务器带宽产生较大压力. 因此在某些应用下( ...

随机推荐

  1. Qt:QJsonParseError

    0.说明 QJsonParseError用于JSON解析时报告error. 1.模块和加载项 Header #include<QJsonParseError> qmake QT += co ...

  2. tensorflow源码解析之common_runtime-executor-上

    目录 核心概念 executor.h Executor NewLocalExecutor ExecutorBarrier executor.cc structs GraphView ExecutorI ...

  3. tensorflow源码解析之framework-graph

    目录 什么是graph 图构建辅助函数 graph_transfer_info 关系图 涉及的文件 迭代记录 1. 什么是graph graph是TF计算设计的载体,如果拿TF代码的执行和Java代码 ...

  4. S5700上三层Vlan间隔离的例子

    转自:https://forum.huawei.com/enterprise/zh/forum.php?mod=viewthread&tid=247591 公司最近的无线覆盖做好了,但让人无语 ...

  5. vue项目部署到阿里云服务器(windows),Nginx代理!

    项目构成: 前端:vue+vant-ui, 数据库:mysql, 后端:node.js 部署方式:nginx代理: 一,首先要拥有自己的服务器,阿里,腾讯都可以,我用的是阿里的: 如果只是做个人项目的 ...

  6. docker是干什么的,docker常用命令

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.百度百科 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的镜像中,然后发布到任何流行的Linux或Win ...

  7. Oracle视图(view)传参数教程

    废话不多说,直接上例子! 创建包: create or replace package p_view_param is function set_param(num number) return nu ...

  8. 我写的 Python 代码,同事都说好

    原文链接: 我写的 Python 代码,同事都说好 人生苦短,我用 Python. 程序员的追求就是不写代码,早日财务自由.不对,一不小心把实话说出来了,应该是将代码写得简洁,优雅. Python 程 ...

  9. SpringCloudAlibaba 微服务讲解(二)微服务环境搭建

    微服务环境搭建 我们这次是使用的电商项目的商品.订单.用户为案例进行讲解 2.1 案例准备 2.1.1 技术选型 maven :3.3.9 数据库:mysql 持久层:SpringData JPA S ...

  10. FrameScan-GUI CMS漏洞扫描

    工具简介 FrameScan-GUI是一款python3和Pyqt编写的具有图形化界面的cms漏洞检测框架,是FrameScan的加强版.支持多种检测方式,支持大多数CMS,可以自定义CMS类型及自行 ...