使用JavaScript源映射(.map文件)
摘要
本教程将介绍如何在JavaScript中使用源映射(.map文件)。
内容
最近,我注意到一些JavaScript库(如Angular)随附了一个以.js.map为扩展名的文件,这引发了几个问题:
- 这是用来做什么的?为什么Angular团队要提供一个.js.map文件?
- 作为JavaScript开发人员,我应该如何使用angular.min.js.map文件?
- 我需要关心为我的JavaScript应用程序创建.js.map文件吗?
- 它是如何创建的?我查看了angular.min.js.map文件,发现其中充满了奇怪格式的字符串,所以我认为它不是手动创建的。
件下面是最终被大家认可的答案: 源映射(source maps)文件适用于已被压缩的JavaScript和CSS(现在也适用于TypeScript)文件。当你将一个文件进行压缩(例如angular.js文件),它会将数千行的易读代码变为只有几行的难以理解的代码。在将代码部署到生产环境时,最好使用压缩后的代码而不是完整的、未压缩的版本。在应用程序处于生产环境并出现错误时,源映射文件将帮助你查看原始版本的代码。如果没有源映射文件,任何错误信息看起来都会晦涩难懂。
对CSS文件也是一样的。一旦将Sass或Less文件编译为CSS,它看起来完全不同于原始形式。如果启用源映射,你就可以查看文件的原始状态,而不是修改后的状态。
因此,按照先后顺序回答你的问题:
- 源映射文件的作用是解析压缩后的代码。
- 作为开发人员,你可以在调试生产环境的应用程序时使用它。在开发模式下,你可以使用完整版本的Angular,而在生产环境中,你将使用压缩版本。
- 如果你希望更容易地调试生产代码,那么是的,你应该关心创建js.map文件。
- 它是在构建时由构建工具生成的。有一些构建工具可以像处理其他文件一样处理.js.map文件。
希望这有所帮助。
参考答案:
只关注最后一个问题:如何创建源映射文件。下面是一些可以生成源映射的构建工具:
- Grunt,使用插件:grunt-contrib-uglify
- Gulp,使用插件:gulp-uglify
- Google Closure,使用参数:--create_source_map
参考答案:
源映射文件(source map files)将混淆(压缩)后的文件映射为未混淆(未压缩)的文件。如果在未混淆文件中进行了更改,这些更改将自动应用到混淆后的文件中。
参考答案:
开发者可以按照以下步骤使用源映射文件:
-
不要在index.html文件中链接.js.map文件(没有必要)。
-
当使用好的混淆工具时,被混淆的.js文件会添加一条注释:
//# sourceMappingURL=yourFileName.min.js.map
该注释将连接你的.map文件。
-
在Chrome浏览器中,打开开发者工具,切换到"Sources"选项卡。你会看到"sources"文件夹,其中包含未混淆的应用程序文件。
希望这对你有帮助!
相关文章推荐
- 使用jQuery即时检测<input type="text">的所有更改
- <html>
- 在JavaScript中将数字转换为字符串的最佳方式
- 在JavaScript中执行整数除法和取余操作
- 如何获取当前日期和时间的秒数
- 在 JavaScript 中给今天的日期添加指定天数
- 将逗号分隔的字符串转换为数组的方法
- <!DOCTYPE html>
- +# 用JS解析HTML字符串
- 在Google Chrome中如何通过代码设置JavaScript断点
- 使用jQuery实现自动滚动到页面底部
- PHP中的shell_exec()和exec()命令的区别
- 在JavaScript中如何编写行内的IF语句
- "正确"的JSON日期格式是什么?
- 在JavaScript中给Date对象添加小时的方法
- 如何克隆一个 Date 对象?
- 使用 Fetch API 进行 GET 请求设置查询字符串
- 如何从JavaScript对象中删除项
- 阻止双击后文本选择的方法