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在线编码解码工具

浏览器支持

目前,Chrome、Firefox、Safari和IE11都支持Javascript和CSS的Source Map了,并且默认都是启用的,你可以用下面的方式确认一下。

参考链接

  1. 前端构建:Source Maps详解
  2. An Introduction to Source Maps
  3. 阮一峰 JavaScript Source Map 详解
  4. Introduction to JavaScript Source Maps
  5. Source Map详解

Source Map介绍 -浏览器篇相关推荐

  1. Source Map的原理探究

    摘要: Source Map很神奇,它的原理挺复杂的- 原文:source map 的原理探究 地址:https://www.cnblogs.com/Wayou/p/understanding_fro ...

  2. Source Map入门教程

    部署前端之前,开发者通常会对代码进行打包压缩,这样可以减少代码大小,从而有效提高访问速度.然而,压缩代码的报错信息是很难Debug的,因为它的行号和列号已经失真.这时就需要Source Map来还原真 ...

  3. ts 打开sourcemap_调试篇 – Source Map - Node.js 调试指南

    4.1.1 什么是 Source Map? 对于 Source Map,想必大家并不陌生,在前端开发中通常要压缩 JavaScript,CSS,以减小体积,加快网页显示.但带来的后果是如果出现错误,就 ...

  4. 【转】webpack中关于source map的配置

    Webpack中sourcemap的配置 sourcemap是为了解决开发代码与实际运行代码不一致时帮助我们debug到原始开发代码的技术.尤其是如今前端开发中大部分的代码都经过编译,打包等工程化转换 ...

  5. Source Maps介绍

    结合并压缩你的JavaScript和CSS文件能够让你的网站更加优秀.但是,当你需要调试这些压缩文件中的代码就会变成一个噩梦.不要害怕,我们可以通过Source Maps解决这个问题. Source ...

  6. .map文件 源映射(Source Map)详解

    一.什么是源映射 为了提高性能,很多站点都会先压缩 JavaScript 代码然后上线, 但如果代码运行时出现错误,浏览器只会显示在已压缩的代码中的位置,很难确定真正的源码错误位置. 这时源映射就登场 ...

  7. 今天给在家介绍一篇健身俱乐部信息管理系统设计与实现

    项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你 ...

  8. 大家介绍一篇学生选课系统的设计与实现

    项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你 ...

  9. 今天给大家介绍一篇基基于SSM超市管理系统的设计与实现

    项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你 ...

最新文章

  1. 如何克服实施OKR的阻力?
  2. python适合做后端开发吗-Python后端开发是什么职位?
  3. java多线程实现方法
  4. 关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】
  5. Oracle 原理:序列
  6. 宝典9.2——海量数据的基本处理方法
  7. SpringBoot整合RocketMQ之环境搭建以及Producer发送消息
  8. org.apache.maven.plugin.MojoExecutionException: protoc version is libprotoc 3.6.1, expected versio
  9. Istio的零停机滚动更新
  10. 千万别被“读书无用”给害了
  11. Nuget包管理工具(程序包控制台执行语句)
  12. java 线程协作 wait(等待)与 notiy(通知)
  13. go语言io reader_Golang io.TeeReader()用法及代码示例
  14. 浅谈同构类问题的骗分算法
  15. 【Django】Django视图views详解
  16. ROS日记:ROS系统的备份和还原
  17. HTML5七夕情人节表白网页制作 __浪漫空中散落的花瓣3D相册__ HTML+CSS+JavaScript
  18. Python 网络爬虫从0到1 (2):网络爬虫的特性、问题与规范
  19. 小程序或者公众号授权给第三方平台流程
  20. NSDTF-DEM格式高程数据转通用的tiff格式高程数据

热门文章

  1. 02Hbuilder计算圆锥的体积
  2. 学无止境:了解主流的DBA认证考试
  3. 想学习Nunit的使用
  4. python中divmod_python 中的divmod数字处理函数浅析
  5. 十二天宫之射手女生篇
  6. 程序员2018年度代码报告,句句戳心
  7. Linux-ssh: connect to host 192.168.1.161 port 22: Connection refused
  8. Unity shader的StencilTest、ZTest与半透明渲染
  9. Java学习笔记——类集框架简介
  10. Jboss AS 7 部署web应用程序时无法初始化spring的bean的解决办法