iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Sourcemap源代码映射详细介绍
  • 187
分享到

Sourcemap源代码映射详细介绍

Sourcemap源代码映射Sourcemap 映射 2023-05-15 08:05:38 187人浏览 独家记忆
摘要

目录Sourcemap(源代码映射)调试过程中显示原始的 未压缩代码简单的 webpack 配置文件示例Sourcemap(源代码映射) 用于将生产环境中的压缩代码映射回原始的源代

Sourcemap(源代码映射)

用于将生产环境中的压缩代码映射回原始的源代码。在前端开发过程中,javascriptCSS 和其他文件通常会被压缩和混淆,以减小文件大小和提高网站加载速度。然而,这会让调试和错误定位变得困难,因为生产环境中的代码难以阅读和理解。

Sourcemap 的作用是在开发和生产环境之间建立一个桥梁,使开发人员能够在浏览器中查看、调试和分析原始代码,而不是压缩后的代码。这对于错误追踪、性能分析和调试非常有帮助。

调试过程中显示原始的 未压缩代码

Sourcemap 通常以一个单独的文件形式存在,它包含了压缩文件和原始文件之间的映射信息。这些映射信息包括每个源代码文件的位置和行列号。浏览器的开发者工具可以读取这些映射文件,从而在调试过程中显示原始的、未压缩的代码。

在开发过程中,许多构建工具(如 WEBpack、Rollup 和 Babel)都支持自动生成和处理 sourcemap。

只需要在配置文件中启用相关选项,工具会在生成压缩文件的同时生成相应的 sourcemap 文件。

假设你有一个简单的 JavaScript 文件(main.js):

function add(a, b) {
  return a + b;
}
function subtract(a, b) {
  return a - b;
}
const result = add(10, 20);
console.log('Result of add function:', result);
const difference = subtract(20, 10);
console.log('Result of subtract function:', difference);

在部署到生产环境之前,你可能会使用某个构建工具(如 Webpack 或 UglifyJS)将其压缩和混淆。

压缩后的代码可能看起来像这样(main.min.js):

!function(n){var r={};function e(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return n[t].call(o.exports,o,o.exports,e),o.l=!0,o.exports}e.m=n,e.c=r,e.d=function(n,r,t){e.o(n,r)||Object.defineProperty(n,r,{enumerable:!0,get:t})},e.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},e.t=function(n,r){if(1&r&&(n=e(n)),8&r)return n;if(4&r&&"object"==typeof n&&n&&n.__esModule)return n;var t=Object.create(null);if(e.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:n}),2&r&&"string"!=typeof n)for(var o in n)e.d(t,o,function(r){return n[r]}.bind(null,o));return t},e.n=function(n){var r=n&&n.__esModule?function(){return n.default}:function(){return n};return e.d(r,"a",r),r},e.o=function(n,r){return Object.prototype.hasOwnProperty.call(n,r)},e.p="",e(e.s=1)}([function(n,r,e){console.log("Result of add function:",e(3)(10,20)),console.log("Result of subtract function:",e(2)(20,10))},function(n,r){n.exports=function(n,r){return n+r}},function(n,r){n.exports=function(n,r){return n-r}},function(n,r,e){"use strict";r.__esModule=!0,r.default=void 0;var t=e(1),o=e.n(t),u=e(2),c=e.n(u);r.default=function(n,r){return"add"===n?o()(r[0],r[1]):"subtract"===n?c()(r[0],r[1]):void 0}}]);

显然,这段代码很难阅读和调试。为了解决这个问题,你可以为该文件生成一个 sourcemap(main.min.js.map)。这个 sourcemap 文件会包含映射信息,使浏览器能够将压缩代码映射回原始代码。

压缩后的文件通常还包含一个注释,指向对应的 sourcemap 文件:

//# sourceMappingURL=main.min.js.map

当浏览器的开发者工具检测到这个注释时,它会自动加载 sourcemap 文件,并在调试时显示原始的未压缩代码。这样,当你在浏览器的开发者工具中设置断点、查看堆栈跟踪或查看日志时,你将看到原始的、易于阅读的代码,而不是压缩后的代码。

例如,在上面的 main.js 文件中,如果你在 console.log 语句处设置断点,浏览器将显示原始文件(main.js)及其内容,而不是压缩后的文件(main.min.js)。这使得调试和错误定位变得更加简单和高效。

要生成 sourcemap 文件,你可以在构建工具的配置文件中启用相应选项。

简单的 Webpack 配置文件示例

以下是一个简单的 Webpack 配置文件示例,用于生成 JavaScript 文件的 sourcemap:

const path = require('path');
module.exports = {
  entry: './src/main.js',
  output: {
    filename: 'main.min.js',
    path: path.resolve(__dirname, 'dist')
  },
  devtool: 'source-map', // 生成 sourcemap
  module: {
    rules: [
      {
        test: /.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env']
          }
        }
      }
    ]
  }
};

在这个配置中,devtool: 'source-map' 表示生成单独的 sourcemap 文件。Webpack 支持不同类型的 sourcemap,例如 inline-source-map(将 sourcemap 信息嵌入到输出文件中)和 cheap-source-map(生成更快但可能不那么精确的 sourcemap)。具体选项可以根据项目需求和调试需求进行选择。

生成 sourcemap 后,你可以在生产环境中轻松地调试和定位错误。但请注意,sourcemap 文件可能会泄露源代码信息,因此在部署到生产环境时,应确保不将 sourcemap 文件公开暴露。可以通过将 sourcemap 文件仅上传到错误跟踪服务,或在服务器上配置访问权限,以防止未经授权的访问。

以上就是Sourcemap源代码映射详细介绍的详细内容,更多关于Sourcemap源代码映射的资料请关注编程网其它相关文章!

--结束END--

本文标题: Sourcemap源代码映射详细介绍

本文链接: https://www.lsjlt.com/news/208579.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Sourcemap源代码映射详细介绍
    目录Sourcemap(源代码映射)调试过程中显示原始的 未压缩代码简单的 Webpack 配置文件示例Sourcemap(源代码映射) 用于将生产环境中的压缩代码映射回原始的源代...
    99+
    2023-05-15
    Sourcemap源代码映射 Sourcemap 映射
  • Sourcemap源代码映射的方法是什么
    今天小编给大家分享一下Sourcemap源代码映射的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Sourcema...
    99+
    2023-07-05
  • Mybatis结果集映射与生命周期详细介绍
    目录一、ResultMap结果集映射1、设计思想2、resultMap的应用场景二、生命周期和作用域一、ResultMap结果集映射 1、设计思想 对简单的语句做到零配置,对于复杂一...
    99+
    2022-11-13
    Mybatis结果集映射 Mybatis生命周期
  • Java反射使用的详细介绍
    文章目录 反射反射基本介绍反射获取类对象反射获取构造器对象反射获取成员变量对象反射获取方法对象 反射 反射基本介绍 反射概述: 反射认为类的每一个成份都是一个对象, 对于任何一个Class类,在"运行的时候"都可以直接得...
    99+
    2023-08-20
    java jvm 开发语言
  • PHP7代码加密扩展详细介绍
    这篇文章主要介绍了PHP7代码加密扩展详细介绍,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。特点简单快速,经实测,几乎不影响性能兼容 OPcache、Xdebug 等其他扩展...
    99+
    2023-06-14
  • java的反射技术详细介绍
    本篇内容主要讲解“java的反射技术详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java的反射技术详细介绍”吧!反射的定义:审查元数据并收集关于它的类型信息的能力。下面介绍java的反...
    99+
    2023-06-17
  • muduo源码分析之TcpServer模块详细介绍
    这次我们开始muduo源代码的实际编写,首先我们知道muduo是LT模式,Reactor模式,下图为Reactor模式的流程图[来源1] 然后我们来看下muduo的整体架构[来源1...
    99+
    2024-04-02
  • apt源配置详细全面介绍
    0. 引言 由于 apt-get 获取的应用来自于国外,往往下载速度极慢,因此部分公司、学校将部分或所有软件的更新同步到自己的服务器,这些软件包下载来源就是国内的源。由于不同源同步的软件不一定完全相...
    99+
    2023-09-04
    ubuntu 服务器 linux
  • JavaAOP动态代理详细介绍
    目录1.IOC与AOP概念2.为何使用动态代理2.1 JDK原生动态代理2.1.1 MathService接口类2.1.2 MathServiceImpl实现接口类2.1.3 Pro...
    99+
    2024-04-02
  • JavaScript可迭代对象详细介绍
    目录1、迭代器2、迭代器接口与可迭代对象3、自定义可迭代对象3.1、可迭代的Range对象3.2、使用Generator函数作为迭代器接口3.3、可迭代的List3.3、可迭代的迭代...
    99+
    2024-04-02
  • 详细介绍github中怎么下载资源
    GitHub是一个开源代码托管平台,为开发者提供了非常便捷的代码管理和协作工具。在Github的官网(https://github.com),我们可以找到大量的优秀开源资源并下载使用。但对于新手来说,找到并下载这些资源还是有些困难。那么该如...
    99+
    2023-10-22
  • C++实现三子棋游戏详细介绍(附代码)
    目录游戏描述:游戏思维导图:(从头开始)头文件也写在前面:先把游戏与主函数写在前面:游戏函数:主函数:1.构建游戏菜单2.构建棋盘3.玩家和电脑下棋3.1玩家先下3.2电脑下棋4.判...
    99+
    2024-04-02
  • Java反射使用的详细介绍(最新推荐)
    目录反射反射基本介绍反射获取类对象反射获取构造器对象反射获取成员变量对象反射获取方法对象反射 反射基本介绍 反射概述: 反射认为类的每一个成份都是一个对象, 对于任何一个Class类...
    99+
    2023-02-15
    Java反射使用 Java反射详解
  • Java原码、补码和反码的详细介绍
    这篇文章主要讲解了“Java原码、补码和反码的详细介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java原码、补码和反码的详细介绍”吧!1.原码、反码和补码大家应该都知道,数据在计算机中...
    99+
    2023-06-16
  • Java递归和迭代区别详细介绍
    目录1.递归和迭代的区别2.代码1.递归和迭代的区别 当实体调用自身时,程序称为递归。当存在循环(或重复)时,程序称为迭代调用。示例:求一个数的阶乘的程序  时间复杂度比较...
    99+
    2023-05-15
    Java 递归和迭代区别介绍 Java递归和迭代的区别 递归和迭代的区别
  • SpringCloud新一代网关Gateway的详细介绍
    本篇内容介绍了“SpringCloud新一代网关Gateway的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、概述简介1.1、简...
    99+
    2023-06-20
  • SpringBoot静态资源的访问方法详细介绍
    目录一. 静态资源二. 静态资源访问目标三. 静态资源访问前缀1. 默认访问路径为 /2. 配置访问前缀3. 配置静态资源默认访问位置四. 欢迎页及网页图标设置1. 欢迎页的设置2....
    99+
    2024-04-02
  • 详细介绍如何使用手机下载Gitee上的代码
    在移动互联网时代,我们不再局限于使用电脑进行编程,手机也可以成为我们进行代码管理与开发的利器。而作为国内著名的代码托管平台,Gitee也提供了在手机上下载代码的功能。本文将详细介绍如何使用手机下载Gitee上的代码。一、前置条件在使用Git...
    99+
    2023-10-22
  • 详细介绍Gitee码云的调用方式
    Gitee是一个基于Git的代码托管平台,提供代码托管、协作、编译、部署等服务,以及完整的软件生命周期解决方案。Gitee码云是其国内版本,拥有更好的访问速度和更好的用户体验。在开发过程中,如何在项目中调用Gitee码云的代码成为了一个很重...
    99+
    2023-10-22
  • Vue替代vuex的存储库Pinia详细介绍
    目录前言Pinia介绍1. 创建一个Pinia store2. 访问State3. Pinia修改数据的四种方法4. 重置State5. 替换state6. 订阅状态7. Gette...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作