0.图片上传思路
- 监听一个input(type=‘file’)的onchange事件,这样获取到文件file;
- 将file转成dataUrl;
- 然后根据dataUrl利用canvas绘制图片压缩,然后再转成新的dataUrl;
- 再把dataUrl转成Blob;
- 把Blob append进FormData中;
- xhr实现上传。
1.基于H5的File API和input实现
About 12 min
- 监听一个input(type=‘file’)的onchange事件,这样获取到文件file;
- 将file转成dataUrl;
- 然后根据dataUrl利用canvas绘制图片压缩,然后再转成新的dataUrl;
- 再把dataUrl转成Blob;
- 把Blob append进FormData中;
- xhr实现上传。
JavaScript
的模块机制其实是借鉴的其他程序设计语言的, 如Java中package的概念, import java.util.ArrayList;
; package就是逻辑上相关的代码组织到同一个包内,包内是一个相对独立的作用域,不用担心命名冲突等等, 当需要在外部使用的时候直接import相应的package即可。
由于JavaScript
在设计之初的定位原因, 并没有提供类似模块的功能, 随后便出现了各种模拟类似功能的规范。到今天(2018-5-28)ES6已经十分普及, ES6的模块机制已经大规模使用, 我们完全可以使用ES6提供的模块化规范(机制)。