logo

Shapez Theme

· Home Playground About · Prev Next

18


APRIL

source map 简介(翻译)

by Jason   ·   2014-04-18   ·   1 minutes reading time

原文地址:

introduction-source-maps

翻译的不好,见谅。另注:关于文中提到的,这里有一篇中文的介绍

译文:

我们常常使用一个提升站点性能的办法,就是把js文件和css文件打包压缩。但是压缩以后如果我们要调试或者修改呢?那简直是恶梦。不过,现在有一种可以部分解决这个问题的方式,叫做Source Map,我们翻译成源码图吧。

Source Map可以把压缩的文件转换成压缩前的样子。这就意味着,你可以尽管压缩你的代码,然后还可以方便的调试源码。现在chrome和firefox浏览器的开发工具已经支持SourceMap了。

本文介绍SourceMap的工作原理和生成方法,我们只介绍js的sourcemap。

备注:firefox默认支持SourceMap,Chrome浏览器需要手动开启支持。设置方法:在chrome浏览器的控制面板里(settings),里面的常规选项卡里有Enable js sourcemap 和Enable css source map 两个选项,勾选即可。

Source Map 工作方式

顾名思义,源图由一大堆信息组成,把压缩的代码转换成阅读的原始代码。您可以指定一个不同的源映射。做法就是把压缩的代码中加入一句注释:

//# sourceMappingURL=/path/to/script.js.map

支持Source Map的js压缩工具会自动加入这句注释,浏览器只在开发工具打开的时候才会识这句注释并加载map文件(如果是chrome浏览器,则需要设置打开)。

map文件其实是一个json格式的文件,包含一些相关性的信息,示例如下:

{  
    version: 3,  
    file: "script.js.map",  
    sources: [  
        "app.js",  
        "content.js",  
        "widget.js"  
    ],  
    sourceRoot: "/",  
    names: ["slideUp", "slideDown", "save"],  
    mappings: "AAA0B,kBAAhBA,QAAOC,SACjBD,OAAOC,OAAO..."  
}

每个节点的含义如下:

用UgilfyJS压缩工具生成map文件

UgilfyJS是一个优秀的压缩js的命令行工具,版本2以上的版本支持SourceMap,使用方式为:

uglifyjs [input files] -o script.min.js --source-map script.js.map --source-map-root http://example.com/js -c -m

grunt 有个ugilfyJS插件,可参考对应文档使用。

Chrome Dev Tools查看的效果

The Sources Tab in Chrome Dev Tools

The Sources Tab in Chrome Dev Tools

(本人电脑可能是版本问题,并未出现对应的js)

TRY A DEMO

Firefox Developer Tools中查看效果

The Debugger Tab in the Firefox Developer Tools

The Debugger Tab in the Firefox Developer Tools

Firefox的开发工具的debugger可以看到,不过当你尝试的时候会发现只有当打开对应的js时才会出现内容,之前不会加载出来(或者说渲染出来).

TRY A DEMO

后记

Source Map允许程序员优化代码的同时又能够方便的调试源代码,着实是个好东西.

这篇文章压缩js用到了UglifyJS.如果你还没有用过UglifyJS优化你的网站,可以把这个工具加入你的工作流中。