最新要闻
- 一季报预览:哪些公司业绩有望超预期
- 全球快看点丨迪拜拍出世界最贵车牌号:价值超1亿元!
- 各地开通旅游专列:去淄博吃烧烤都有专列了
- 环球今亮点!米粉催卢伟冰发小米13 Ultra:我想冲顶配版
- 丰田在日召回超20万辆汽车:发动机有火灾隐患 已烧了两辆
- 世界观焦点:整合Microsoft 365服务:Win11文件管理器将迎来大更新
- 环球今日讯!围挡后面丨长沙河西首个三甲妇幼医院住院楼封顶!预计2025年建成投用
- 【天天新要闻】还去吗?泰国清迈发布“居家办公令” PM2.5超标准5倍:游客因空气污染锐减
- “数学之王”丘成桐AI人工智能投入不能急功近利:中国很多技术卡脖子 基础科学没做好
- 元宇宙崩盘 林俊杰疑回应炒虚拟地产亏91%:听说很多人想帮我理财
- 北方大范围沙尘又来了 今年的沙尘天气为啥显得格外多?
- 环球要闻:背景太假哥疆域阿力木捡的狗“狼里狼气” 网友出谋划策辨认
- 【环球新视野】极氪X官宣4月12日上市:全能SUV 零百加速3秒级
- 焦点热文:我国构建世界首个番茄超泛基因组:能让番茄更好吃、产量多6成
- 全球播报:男女配合当街开井盖用勺挖地沟油被网友拍下引围观:行为太恶劣 应严惩
- 天天微资讯!林俊杰“炒房”浮亏91%?元宇宙泡沫的冰山一角
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
介绍一下sourcemap
Sourcemap(源代码映射)用于将生产环境中的压缩代码映射回原始的源代码。在前端开发过程中,JavaScript、CSS 和其他文件通常会被压缩和混淆,以减小文件大小和提高网站加载速度。然而,这会让调试和错误定位变得困难,因为生产环境中的代码难以阅读和理解。
(相关资料图)
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 配置文件示例,用于生成 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 文件仅上传到错误跟踪服务,或在服务器上配置访问权限,以防止未经授权的访问。
关键词:
-
今日关注:全网最详细中英文ChatGPT-GPT-4示例文档-文章大纲智能生成器从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js
ChatGPT提供了快速智能生成文章大纲的功能,旨在帮助作者更高效地实现创作目标。ChatGPT还可以根据作者...
来源: 介绍一下sourcemap
今日关注:全网最详细中英文ChatGPT-GPT-4示例文档-文章大纲智能生成器从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js
一季报预览:哪些公司业绩有望超预期
全球快看点丨迪拜拍出世界最贵车牌号:价值超1亿元!
各地开通旅游专列:去淄博吃烧烤都有专列了
环球今亮点!米粉催卢伟冰发小米13 Ultra:我想冲顶配版
丰田在日召回超20万辆汽车:发动机有火灾隐患 已烧了两辆
世界观焦点:整合Microsoft 365服务:Win11文件管理器将迎来大更新
如何部署VSCODE SERVER
Silverlight教程_编程入门自学教程_菜鸟教程-免费教程分享
环球今日讯!围挡后面丨长沙河西首个三甲妇幼医院住院楼封顶!预计2025年建成投用
【天天新要闻】还去吗?泰国清迈发布“居家办公令” PM2.5超标准5倍:游客因空气污染锐减
“数学之王”丘成桐AI人工智能投入不能急功近利:中国很多技术卡脖子 基础科学没做好
元宇宙崩盘 林俊杰疑回应炒虚拟地产亏91%:听说很多人想帮我理财
北方大范围沙尘又来了 今年的沙尘天气为啥显得格外多?
天天观速讯丨通过 lua 进行 nginx redis 访问控制
焦点热议:多项数据向好 交通物流加速“跑起来”
环球要闻:背景太假哥疆域阿力木捡的狗“狼里狼气” 网友出谋划策辨认
【环球新视野】极氪X官宣4月12日上市:全能SUV 零百加速3秒级
焦点热文:我国构建世界首个番茄超泛基因组:能让番茄更好吃、产量多6成
全球播报:男女配合当街开井盖用勺挖地沟油被网友拍下引围观:行为太恶劣 应严惩
天天微资讯!林俊杰“炒房”浮亏91%?元宇宙泡沫的冰山一角
【时快讯】学系统集成项目管理工程师(中项)系列05_配置管理
天天动态:一不注意就被坑,家电“潜规则”早知道早好
今日热文:Spring5课堂笔记
Java8 Stream流式编程
【新要闻】128核心Arm处理器能跑Windows!还能配NVIDIA显卡
时讯:新疆和硕:田间地头 话两会
maptalks点线面图形样式设置经验总结
【天天速看料】马龙惊魂3-2拒绝一轮游,与小林再迎老少对决!国乒首日狂走钢丝
在米其林餐厅找罪受?人均8千元餐厅疑发生食物中毒
世界热点!张艺谋宣布将拍网剧《英雄联盟》!第一次 想拍个不一样的
环球新动态:Vulnhub Mercy靶场 Walkthrough
FSR、DLSS谁更好?26款游戏PK:AMD居然0胜!
环球速看:AI 史话
每日讯息!Weex原理及架构剖析
旅游专列来啦具体详细内容是什么
中国新能源汽车在欧洲火了:每10辆就有1辆来自中国
【时快讯】WebKit三件套(3):WebKit之Port篇
每日速看!HBase在进行模型设计时重点在什么地方?一张表中定义多少个Column Family最合适?为什么?
环球资讯:第136篇:Three.js基础入门动画API:setInterval 与 requestAnimationFrame的区别
程序员午休时健身猝死 被认定工伤 法院:属于在岗状态
比亚迪车主用木头手工还原汉EV:前后双电机 真能跑
每日速讯:WebKit三件套(1):WebKit之WebCore篇
焦点关注:C盘爆满的解决方法,不用删除文件,使用分区助手无损增加内存
简讯:招标活动法律保障工作实务指南 2016年版
锐龙7 7800X3D配A620主板 性能损失多少?实在没想到
天天微头条丨成都升温 千足虫满街爬:专家科普小心毒臭液
全球最大盗版电子书网站Z-Library被封后复活:路子更野了!要共享纸质书
速读:Steam排名第一!GTX 1650亮机卡火爆断货:RTX 2070紧急变身救场
【天天速看料】Vue——patch.ts【十四】
浏览器史话中chrome霸主地位的奠定与国产浏览器的割据混战
Vue开发规范
天天速递!只剩Windows版了!B站正式宣布UWP版停止维护
环球时讯:洛阳上演汉服秀 网友偶遇唐僧师徒四人坐地铁去“取经”
男子体内惊现小树苗!都长到5厘米高了
环球今亮点!或为AR眼镜新品!小米神秘“新礼物”明早10点正式亮相
今热点:解放军环台岛战备警巡和演习,专家:或成惩戒“台独”新模式
天天通讯!Linux常用操作命令总结
iOS Modern Collection View
线段树好题! P2824 [HEOI2016/TJOI2016]排序 题解
每日动态!小米寄修服务“史诗级”提升:新增进度可视化功能
天天资讯:第7章_InnoDB数据存储结构
天天快报!css过去及未来展望—分析css演进及排版布局的考量
每日关注!微信小程序 开发,uni-app 开发简介
今日报丨朗新科技:拟提前赎回“朗新转债”
今日观点!男子网购耐克鞋却挂着李宁的吊牌 网友:联名款?
数组的算法
超同年漫威大片近3倍!新海诚《铃芽之旅》国内票房达7亿
VUE-Antd开发,validate规则校验第一次为空,后面无论怎么输入都显示不可为空
环球新消息丨上海国创科技产业创新发展中心理事长黄岩:人工智能会像手机一样进入我们的日常生活
每日聚焦:青春回来了!电影《灌篮高手》流川枫角色预告出炉:4月20日国内上映
世界今亮点!暴雪战网遭遇DOSS攻击!多款游戏无法正常登录
世界聚焦:2023年3月随笔暨第1季度总结
世界热资讯!ASP.NET Core MVC 从入门到精通之接化发(一)
【全球聚看点】快速幂算法
私有化部署chatGPT,告别网络困扰
新车一超过60km/h就耳朵疼 车主:找了20多个人开都如此
Win11新版最快5月推送:微软确认Moment 3更新
【全球热闻】富二代开保时捷碰瓷:专挑开豪车酒驾的敲诈 “赚了”30多万
聚焦:五粮液董事长曾从钦:在“时与势”中勇担使命,在“稳与进”中拓展空间,在“个与众”中升级维度
今年1号台风“珊瑚”下周或生成 预计2023年登陆我国的台风至少6个
夏日必备!楠木之舟EVA拖鞋19.9元:轻盈高回弹
男士洗脸专属大牌 妮维雅控油、祛痘洗面奶大促:不到20
世界最新:ChatGPT火爆 元宇宙房产崩盘!林俊杰买虚拟地产浮亏91%
岚图汽车1V4 “开火”保时捷、蔚来、奥迪、极氪!结果尴尬:无一车企回应
环球实时:4月09日10时江苏南通疫情最新消息 4月09日10时江苏南通今日确诊人数
让民生福祉更有“数”——中国电子政务论坛聚焦数字政府建设
【天天播资讯】为啥国产电动车在欧洲不好卖?海外汽车大V给出5点原因
环球热讯:今天国际护胃日 年轻人为啥会被胃癌盯上?胃病转向胃癌有5个信号
全球今头条!通用自动驾驶汽车撞上公交车 300辆无人出租车被召回
沙尘暴蓝色预警来了:北方将迎沙尘天气!官方分享防御指南
“码农”劳动争议频发 厘清责任依法“护体”
焦点快播:存碰撞风险!特斯拉美国召回422辆Model 3:前悬架连杆有隐患
新资讯:朱晓彤 总算升职了!将在特斯拉墨西哥工厂获得一张新床
环球资讯:有人用ChatGPT月入十万了!70+款免费AI工具大搜罗
每日热门:sip消息拆包原理及组包流程
每日聚焦:超2250万台(套)各型装备投入春耕—— 农机化支撑粮食稳产增产
微头条丨小米14曝光:屏幕边框窄到没朋友 华星供货
贝克汉姆回复王濛大胆表白 感谢你的赞美:后者曾公开表示因为帅喜欢他