Source Map介绍 -浏览器篇
Source Map介绍 - 浏览器篇
- Source Map介绍
- 浏览器source map
- source map 使用介绍和原理
- 浏览器支持
- 参考链接
Source Map介绍
在做网站性能优化的时候,我们经常会做js和css代码压缩。但是压缩之 后的代码在调试的时候就会异常困难。source map就是解决问题的一种解决方案
浏览器source map
- chrome sourcemap功能设置界面
source map 使用介绍和原理
第一种方式
在你的压缩文件末尾加上下面注释。如果你开了devtool并且开启了sourcemap功能,浏览器就会去加载这个map文件//# sourceMappingURL=/path/to/script.js.map
第二种方式
在HTTP响应头上面设置X-SourceMap如下X-SourceMap: /path/to/script.js.map
sourcemap文件格式基本介绍
{version: 3,file: "script.js.map",sources: ["app.js","content.js","widget.js"],"sourcesContent": [ " \t// The module cache\n \tvar installedModules = {};\n\n \t// The require funct"],sourceRoot: "/",names: ["slideUp", "slideDown", "save"],mappings: "AAA0B,kBAAhBA,QAAOC,SACjBD,OAAOC,OAAO..." }
- version:Source map的版本,目前为3。
- file:转换后的文件名。
- sourceRoot:转换前的文件所在的目录。如果与转换前的文件在同一目录,该项为空。
- sources:转换前的文件。该项是一个数组,表示可能存在多个文件合并。
- sourceContent:转换前文件的内容。当没有配置sources的时候会使用该项
- names:转换前的所有变量名和属性名。
- mappings:一个base64 VLQ编码映射到真实代码位置的字符串。
- mappings字符串用;分割的一组对应生成代码中的一行;
每一组用,分割的一段对应生成代码中的一个位置信息;
每一段里是5个数字的Base64 VLQ编码,比如[9,0,0,1,1]这5个数字的编码是SAACC:
第0个数字,表示这个位置在生成代码的第几列;
第1个数字,表示这个位置属于sources属性中的哪一个文件;
第2个数字,表示这个位置属于原始代码的第几行;
第3个数字,表示这个位置属于原始代码的第几列;
第4个数字,表示这个位置属于names属性中的哪一个变量。这个数字不是必需的,可以省略。
由于Base64 VLQ编码是变长的,所以每一段可以由多个字符构成。
VLQ在线编码解码工具
- mappings字符串用;分割的一组对应生成代码中的一行;
浏览器支持
目前,Chrome、Firefox、Safari和IE11都支持Javascript和CSS的Source Map了,并且默认都是启用的,你可以用下面的方式确认一下。
参考链接
- 前端构建:Source Maps详解
- An Introduction to Source Maps
- 阮一峰 JavaScript Source Map 详解
- Introduction to JavaScript Source Maps
- Source Map详解
Source Map介绍 -浏览器篇相关推荐
- Source Map的原理探究
摘要: Source Map很神奇,它的原理挺复杂的- 原文:source map 的原理探究 地址:https://www.cnblogs.com/Wayou/p/understanding_fro ...
- Source Map入门教程
部署前端之前,开发者通常会对代码进行打包压缩,这样可以减少代码大小,从而有效提高访问速度.然而,压缩代码的报错信息是很难Debug的,因为它的行号和列号已经失真.这时就需要Source Map来还原真 ...
- ts 打开sourcemap_调试篇 – Source Map - Node.js 调试指南
4.1.1 什么是 Source Map? 对于 Source Map,想必大家并不陌生,在前端开发中通常要压缩 JavaScript,CSS,以减小体积,加快网页显示.但带来的后果是如果出现错误,就 ...
- 【转】webpack中关于source map的配置
Webpack中sourcemap的配置 sourcemap是为了解决开发代码与实际运行代码不一致时帮助我们debug到原始开发代码的技术.尤其是如今前端开发中大部分的代码都经过编译,打包等工程化转换 ...
- Source Maps介绍
结合并压缩你的JavaScript和CSS文件能够让你的网站更加优秀.但是,当你需要调试这些压缩文件中的代码就会变成一个噩梦.不要害怕,我们可以通过Source Maps解决这个问题. Source ...
- .map文件 源映射(Source Map)详解
一.什么是源映射 为了提高性能,很多站点都会先压缩 JavaScript 代码然后上线, 但如果代码运行时出现错误,浏览器只会显示在已压缩的代码中的位置,很难确定真正的源码错误位置. 这时源映射就登场 ...
- 今天给在家介绍一篇健身俱乐部信息管理系统设计与实现
项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你 ...
- 大家介绍一篇学生选课系统的设计与实现
项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你 ...
- 今天给大家介绍一篇基基于SSM超市管理系统的设计与实现
项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你 ...
最新文章
- 如何克服实施OKR的阻力?
- python适合做后端开发吗-Python后端开发是什么职位?
- java多线程实现方法
- 关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】
- Oracle 原理:序列
- 宝典9.2——海量数据的基本处理方法
- SpringBoot整合RocketMQ之环境搭建以及Producer发送消息
- org.apache.maven.plugin.MojoExecutionException: protoc version is libprotoc 3.6.1, expected versio
- Istio的零停机滚动更新
- 千万别被“读书无用”给害了
- Nuget包管理工具(程序包控制台执行语句)
- java 线程协作 wait(等待)与 notiy(通知)
- go语言io reader_Golang io.TeeReader()用法及代码示例
- 浅谈同构类问题的骗分算法
- 【Django】Django视图views详解
- ROS日记:ROS系统的备份和还原
- HTML5七夕情人节表白网页制作 __浪漫空中散落的花瓣3D相册__ HTML+CSS+JavaScript
- Python 网络爬虫从0到1 (2):网络爬虫的特性、问题与规范
- 小程序或者公众号授权给第三方平台流程
- NSDTF-DEM格式高程数据转通用的tiff格式高程数据
热门文章
- 02Hbuilder计算圆锥的体积
- 学无止境:了解主流的DBA认证考试
- 想学习Nunit的使用
- python中divmod_python 中的divmod数字处理函数浅析
- 十二天宫之射手女生篇
- 程序员2018年度代码报告,句句戳心
- Linux-ssh: connect to host 192.168.1.161 port 22: Connection refused
- Unity shader的StencilTest、ZTest与半透明渲染
- Java学习笔记——类集框架简介
- Jboss AS 7 部署web应用程序时无法初始化spring的bean的解决办法