当我们的[Angular](https://medium.com/angular-in...)应用程序部署到生产环境时,我们经常遇到与我们编辑的代码不同的情况在开发过程中。我们的代码在构建过程中以各种方式进行了修改和优化。TypeScript被转译、缩小和丑化。生成的JavaScript包尽可能小并且能够在浏览器中运行。所有这些概念都很棒,因为它们提高了我们应用程序的性能。但是,这也给生产系统的故障排除带来了一些困难。SourceMap是一种解决方案。本质上,源映射是一个JSON文件,其中包含将转译后的代码映射回原始源所需的所有信息。很酷!从技术上讲,sourcemap只是一个包含以下字段的JSON文件:version:表示sourcemap规范versionfile:此sourcemap所属的翻译文件的名称sourceRoot:basePath—相对于此sources的源:原始路径源文件(如TypeScript文件)sourcesContent:可选属性,可以包含您的整个源代码。在此属性中内联源代码时,可以在不托管源代码的情况下检索它。名称:在代码映射中找到的方法或变量名称:这是整个魔法发生的地方。从技术上讲,地图属性是一个非常大的字符串,其中包含一个Base64VLQ(可变长度数量)值。这些值有助于找到源文件中的原始位置。如何检索源地图?要检索源映射,我们需要告诉浏览器它们所在的位置。我们可以通过添加以下行在文件末尾指定sourceMappingURL:Example://#sourceMappingURL=pathToSourceMaps使用此信息,浏览器可以下载源地图文件并解释其内容以创建地图。注意:浏览器仅在开发者工具打开时下载源地图。对于普通用户,没有性能影响。除了在文件末尾添加注释外,您还可以在响应中将SourceMap路径作为HTTP标头的值发送,以获取缩小的JavaScript文件。SourceMap:pathToSourceMap第二种可能性允许您在服务器端切换源地图,而无需在缩小后更改JavaScript文件。开发和生产期间的源映射对于开发版本和生产版本是不同的。在开发过程中,拥有完整的源地图是有意义的,因为我们关注工具、开发经验或热模块替换。另一方面,在生产中,我们专注于性能-小包的快速初始加载。应该在生产中启用源地图吗?这个问题的答案在很大程度上取决于您的项目。如果您正在从事一个开源项目,那么它当然是。但是我们大多数人在日常工作中并不从事开源项目。在企业项目中,您出于充分的理由不想公开您的源代码。我们不想将易于阅读的应用程序代码暴露给外界。更快的构建不想公开源映射的来源。下面介绍如何在生产环境中启用源映射,但不公开其源代码。AngularCLI允许我们配置是否需要源映射。然后它将此信息传递给底层的Webpack。要探索Angular中的源映射,让我们从AngularCLI生成的全新Angular项目开始。ngnewsourceMapInspectorComponent的实现很简单:publicchangeTitle():void{this.title='awesomeapp';}模板中的消费代码: