初探Base64
“ 去认识更多的人,去看更大的世界”
hello,宝宝们,感觉好久没见!昨天去了十渡,风景真的很好,有山有水,大饱眼福,尽管很累。各位宝宝也要常出去走走哦,不要总憋在家里~
今天我要说的是关于base64
什么是Base64
—
Base64是基于64个可打印字符来表示二进制的方法。这64个可打印的字符是:A-Z,a-z,0-9,以上共62,还有两个字符,在不同系统中不同。
在MIME格式中,Base64用于将binary的字节序列编码成ASCII字符序列构成的文本,在传输编码中指定Base64格式。使用的字符是A-Z,a-z,0-9,还有'/' 和 '+'以及' = '作为后缀用途。
每个Base64格式的字符代表6 bits的数据,也就是说3个8 bits的字符串/二进制文件能被4个6 bits的Base64的数字表示。
这就意味着转换成Base64格式的文件会增大大约33%。当数据很小的时候,这个增长可能更大,例如:长度为1的"a",转换成Base64后变成长度为4的"YQ==",这样的话"a"的长度增加了300%
Base64怎么用于前端
—
以上我们知道,如果我们把文件转换成Base64格式的,文件会明显的增大,那么是不是Base64对于我们来说就没有任何卵用呢?
并不是啦!在图片处理上,有时候,我们把图片的引用从请求后端数据改成直接引用Base64数据,这样可以减少一个请求,对网站进行优化。说到减少请求就不得不是CSSspirite,那么针对这两个方案的选择该怎样呢?
原则建议如下:
1,有特殊用途,无法和其他图片合在一起做成雪碧图的
2,使用与小图片,因为打的图片换成Base64对于CSS体积增大明显
3,更新需求不高(如果图片三天两头的更新,那要把前端累死了)
关于Base64的转码
—
js原生支持Base64的转码:
// 将binary数据字符串格式内容转换成Base64的ASCII码
window.btoa()
//将Base64的ASCII码格式内容转换成binary数据字符串
window.atob()
由于DOMString 是16位编码的字符串,所以如果有字符超出了8位ASCII编码的字符范围时,在大多数的浏览器中对Unicode字符串调用 window.btoa
将会造成一个 Character Out Of Range
的异常。所以此时要进行转码:
var str = '凛就是我鸭,哈哈哈'
var ASCIIStr = window.btoa(window.encodeURIComponent(str))
//JUU1JTg3JTlCJUU1JUIwJUIxJUU2JTk4JUFGJUU2JTg4JTkxJUU5JUI4JUFEJUVGJUJDJThDJUU1JTkzJTg4JUU1JTkzJTg4JUU1JTkzJTg4
var decodeStr = window.decodeURIComponent(window.atob(ASCIIStr))
// 凛就是我鸭,哈哈哈
so,关于Base64有了初步的了解,各位宝宝们试着在项目中用用吧!
干货满满的参考文档:https://www.cnblogs.com/coco1s/p/4375774.html
愿我们有能力不向生活缴械投降---Lin
- 雷军旗下金山云再获融资2.2亿美元
- WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[WS标准篇]
- zookeeper配置详解
- WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇]
- zookeeper命令行(zkCli.sh&zkServer.sh)使用及四字命令
- [WCF的Binding模型]之三:信道监听器(Channel Listener)
- zookeeper监控告警
- 扩展ToolBarManager、ListView和Grid控件以实现气球式的ToolTip
- Linux同步机制 - 基本概念(死锁,活锁,饿死,优先级反转,护航现象)
- Linux同步机制 - 多线程开发总结
- 谷歌发布升级版语音合成系统,直接从字符合成语音
- 无锁编程 - 大纲
- 无锁编程(一) - Double-checked Locking
- 无锁编程(二) - 原子操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法