结合Vue.js的前端压缩图片方案

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

为什么要这么做?

在移动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。

作者:mjw

来源:51CTO

时间: 2024-12-04 07:10:26

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

前端开发之走进Vue.js

Vue.js作为目前最热门最具前景的前端框架之一,其提供了一种帮助我们快速构建并开发前端项目的新的思维模式.本文旨在帮助大家认识Vue.js,了解Vue.js的开发流程,并进一步理解如何通过Vue.js来构建一个中大型的前端项目,同时做好相应的部署与优化工作. 文章将以PPT图片附加文字介绍的形式展开,不会涉及知识点的具体代码,点到为止.有兴趣的同学可以查看相应的文档进行了解. Vue.js简介 从上图的介绍中我们不难发现Vue.js是一款轻量级的以数据驱动的前端JS框架,其和jQuery最大的

vue.js与其他前端框架的对比

  React React 和 Vue 有许多相似之处,它们都有: 使用 Virtual DOM 提供了响应式 (Reactive) 和组件化 (Composable) 的视图组件. 将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库. 由于有着众多的相似处,我们会用更多的时间在这一块进行比较.这里我们不只保证技术内容的准确性,同时也兼顾了平衡的考量.我们需要承认 React 比 Vue 更好的地方,比如更丰富的生态系统. 相似之处 React与Vue存在很多相似之处,例如他

基于vue.js实现图片轮播效果_javascript技巧

轮播图效果: 1.html <template> <div class="shuffling"> <div class="fouce fl"> <div class="focus"> <ul class="showimg"> <template v-for='sd in shufflingData'> <li v-if='shufflingId==$

Vue.js 2.0 和 React、Augular等其他前端框架大比拼_javascript技巧

React React 和 Vue 有许多相似之处,它们都有: 使用 Virtual DOM 提供了响应式(Reactive)和组件化(Composable)的视图组件. 保持注意力集中在核心库,伴随于此,有配套的路由和负责处理全局状态管理的库. 相似的作用域,我们会用更多的时间来讲这一块的比较.不仅我们要保持技术的准确性,同时兼顾平衡.我们指出React比Vue更好的地方,例如,他们的生态系统和丰富的自定义渲染器. React社区在这里非常积极地帮助我们实现这一平衡,特别感谢来自 React

前端框架Vue.js中Directive知识详解_javascript技巧

Directive 看上去虽然和Angular中的定义类似,Directive 都是对DOM功能的一种拓展,但是 Vue 的 Directive 要弱的多.因为 Vue Component 其实本来就会包含对DOM的操作,所以大多数时候我们写一个通用组件都是一个Component 而不是一个 Directive,而 在 Angular 我们写一个通用的组件一般都是一个 Directive . 所以我说 Vue 的 Directive 相比于 Angular 要弱的多,也可以说纯粹的多,他就是对

前端框架Vue.js构建大型应用浅析_javascript技巧

真正的模块化 前端模块化很早就开始了,无论是 require.js,browserify 进行模块化打包, 还是 Angular 进行依赖注入,我们都可以把JS代码分成一个个小的模块并组装起来.然后我们还会通过 less 或者 sass 来把CSS文件也拆成一个个小的模块来写,甚至我们在CSS代码中感受到了 封装,继承,多态 等面向对象的特性. 然而,在 webpack 出来之前,我们所谓的模块化根本不能算作模块化.为什么这么讲,因为我们存在一个重要的问题没有解决,就是JS模块对CSS模块的依赖

前端 图片-关于JS动态生成简单图片

问题描述 关于JS动态生成简单图片 http://v3.bootcss.com/examples/dashboard/ 今天学习bootstrap,参照上面的例子做几个固定底色的圆. 先下载bootstrap,查看dashboard实例的index.html 可以看到这几个圆来源docs.min.js,而且类型是图片 然后自己写一个html,引入bootstrap中的docs.min.js,页面写2个img 圆形:<img data-src="holder.js/200x200/auto/

详解vue.js组件化开发实践_javascript技巧

前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然成为了第一个问题.鉴于目前web前端mvvm框架以及组件化开发方式的流行,决定技术栈采用:vue + es6 + 组件化. 这里首先简单说下web前端组件化开发方式的历程: 最早的组件化结构,代码结构可能如下: - lib/components/calendar |- calendar.css |-

webpack+vue.js快速入门教程_javascript技巧

前言 vuejs--轻量.学习成本低.双向绑定.无dom的操作.组件的形式编写 vuejs是个轻量级的mvvm框架, 集合了angular的基本功能,却又比angular更为精简,功能上涵盖了双向绑定.指令.逻辑控制.过滤器.事件监听.函数等.框架的特点使得项目 在状态变更.分页的场景下可以拥有很大的便利--所有的操作只需要变更数组,没有任何的dom操作. webpack--CommonJS的引用和编写方式.loader非常的丰富,包括vue-loader.css-loader.less-loa