国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一文帶你了解什么是源代碼映射?

開發 前端
今天,我們要談論源代碼映射,這是現代 Web 開發中非常重要的工具,可以顯著地簡化調試過程。在本文中,我們將探討源代碼映射的基礎知識,它們是如何生成的,以及它們如何提高調試體驗。

先看下本篇主要內容:

本篇主要介紹源代碼映射,源代碼映射(Source maps)是以??.map???結尾的文件,例如??example.min.js.map???和??styles.css.map??。大多數構建工具都可以生成源代碼映射文件,例如Vite、webpack、Rollup、Parcel、esbuild等,一些工具默認包含源代碼映射,而其他工具則需要額外的配置才能生成它們。

使用源代碼映射可以方便地在開發過程中進行調試,因為它們提供了一種將壓縮、混淆和優化的代碼還原為原始源代碼的方法。這對于診斷和修復錯誤非常有幫助,特別是在生產環境中。源代碼映射還可以幫助你確定哪些代碼行負責執行特定的功能,以及從哪里調用了特定的函數。

盡管源代碼映射非常有用,但是它們會增加文件大小并增加服務器的負載。因此,在生產環境中通常會禁用它們,而在開發過程中啟用它們以便進行調試。如果你使用的構建工具不支持源代碼映射,則有可能需要手動編寫它們。

下面是正文~~~~

今天,我們要談論源代碼映射,這是現代 Web 開發中非常重要的工具,可以顯著地簡化調試過程。在本文中,我們將探討源代碼映射的基礎知識,它們是如何生成的,以及它們如何提高調試體驗。

需要源代碼映射

回到過去的美好時光,我們使用純HTML、CSS和JavaScript構建Web應用程序,并將相同的文件部署到Web上。

然而,隨著我們現在構建更復雜的Web應用程序,開發工作流可能涉及使用各種工具。例如:

  • 模板語言和HTML預處理器:Pug,Nunjucks,Markdown
  • CSS 預處理器:SCSS、LESS、PostCSS
  • JavaScript 框架:Angular、React、Vue、Svelte
  • JavaScript元框架:Next.js,Nuxt,Astro
  • 高級編程語言:TypeScript、Dart、CoffeeScript

圖片

這些工具需要構建過程將我們的代碼轉換為標準的 HTML、JavaScript 和 CSS,以便瀏覽器能夠理解。此外,為了優化性能,通常會壓縮(例如使用 Terser 來縮小和混淆 JavaScript)和合并這些文件,減小它們的大小并使它們更適合于Web。

例如,使用構建工具,我們可以將以下TypeScript文件轉換并壓縮為一行JavaScript代碼。

/* A TypeScript demo: example.ts */

document.querySelector('button')?.addEventListener('click', () => {
const num: number = Math.floor(Math.random() * 101);
const greet: string = 'Hello';
(document.querySelector('p') as HTMLParagraphElement).innerText = `${greet}, you are no. ${num}!`;
console.log(num);
});

一個壓縮版本將是:

/* A compressed JavaScript version of the TypeScript demo: example.min.js  */

document.querySelector("button")?.addEventListener("click",(()=>{const e=Math.floor(101*Math.random());document.querySelector("p").innerText=`Hello, you are no. ${e}!`,console.log(e)}));

然而,這種優化可能會使調試變得更具挑戰性。將所有內容壓縮到單行中并縮短變量名稱的壓縮代碼可能會使問題的源頭難以確定。這就是源映射的作用——它們將編譯后的代碼映射回原始代碼。

生成源代碼映射

源映射是以 .map 結尾的文件(例如, example.min.js.map 和 styles.css.map )。它們可以由大多數構建工具生成,例如 Vite、webpack、Rollup、Parcel、esbuild 等等。

一些工具默認包含源代碼映射,而其他一些工具可能需要額外的配置才能生成它們。

/* Example configuration: vite.config.js */
/* https://vitejs.dev/config/ */

export default defineConfig({
build: {
sourcemap: true, // enable production source maps
},
css: {
devSourcemap: true // enable CSS source maps during development
}
})

理解源代碼映射

這些源映射文件包含有關編譯代碼如何映射到原始代碼的基本信息,使開發人員能夠輕松調試。這是一個源映射的示例。

{
"mappings": "AAAAA,SAASC,cAAc,WAAWC, ...",
"sources": ["src/script.ts"],
"sourcesContent": ["document.querySelector('button')..."],
"names": ["document","querySelector", ...],
"version": 3,
"file": "example.min.js.map"
}

源映射的最關鍵方面是 mappings 字段。它使用 VLQ 基于 64 編碼的字符串將編譯文件中的行和位置映射到相應的原始文件??梢允褂迷从成淇梢暬ぞ撸ㄈ?nbsp;source-map-visualization 和 Source Map Visualization)來可視化此映射。

圖片

左側生成的列顯示壓縮內容,右側原始列顯示原始來源。可視化工具會為原始列中的每一行和生成列中對應的代碼進行著色編碼。

映射部分顯示了代碼的解碼映射。例如,條目 65-> 2:2 的意思是:

  • 生成的代碼:單詞 const 在壓縮內容中的位置為65。
  • 原始代碼:單詞 const 在原始內容中的第2行第2列開始。

圖片

瀏覽器開發者工具應用這些源映射,幫助我們更快地定位調試問題,直接在瀏覽器中進行。

圖片

該圖顯示了瀏覽器開發者工具如何應用源映射,并顯示文件之間的映射關系。

源映射支持擴展。擴展是以 x_ 命名約定開頭的自定義字段。一個例子是由 Chrome DevTools 提出的 x_google_ignoreList 擴展字段。請參閱 x_google_ignoreList 以了解這些擴展如何幫助您專注于我們的代碼。

它不完美

在我們的示例中,變量 greet 在構建過程中被優化掉了。該值直接嵌入到最終的字符串輸出中。

圖片

在這種情況下,當我們調試代碼時,開發人員工具可能無法推斷和顯示實際值。這不僅是瀏覽器開發人員工具的挑戰,也使代碼監視和分析更加困難。

圖片

當然,這是一個可以解決的問題。其中一種方法是像其他編程語言一樣,在源映射中包含范圍信息,以便進行調試。

然而,這需要整個生態系統共同努力改進源映射規范和實現。目前正在積極討論如何通過源映射來提高調試性能。

我們期待著改進源代碼映射,使調試變得更加簡單!

本文轉載自微信公眾號「大遷世界」,可以通過以下二維碼關注。轉載本文請聯系大遷世界公眾號。


責任編輯:姜華 來源: 大遷世界
相關推薦

2025-01-15 09:06:57

servlet服務器Java

2022-09-29 13:09:38

DataClassPython代碼

2023-05-17 11:33:45

梯度下降機器學習

2022-03-14 08:01:06

LRU算法線程池

2022-09-06 11:21:49

光網絡光纖

2019-07-04 15:16:52

數據挖掘大數據算法

2019-04-19 14:03:52

APISDK接口

2022-11-11 19:09:13

架構

2023-11-06 08:16:19

APM系統運維

2023-11-20 08:18:49

Netty服務器

2018-10-22 08:14:04

2024-05-27 00:00:00

.NET游戲引擎C#

2019-11-14 09:16:56

物聯網技術路由器

2022-02-24 07:34:10

SSL協議加密

2023-10-27 08:15:45

2023-11-08 08:15:48

服務監控Zipkin

2022-04-28 09:22:46

Vue灰度發布代碼

2020-10-08 14:32:57

大數據工具技術

2025-09-12 16:31:04

TiDBMCP ServerAI工具

2020-02-02 15:14:24

HTTP黑科技前端
點贊
收藏

51CTO技術棧公眾號

99久久婷婷| 性感少妇一区| 亚洲欧美日韩精品久久奇米色影视| 濑亚美莉一二区在线视频| 91在线观看污| 久久这里只有精品23| 精品女同一区二区| 天堂99x99es久久精品免费| 国产精品高潮呻吟久久| 免费在线观看的毛片| 国产精品天干天干在线综合| 日本www在线播放| 亚洲成人777| 成人精品一区二区| 亚洲欧美一区二区三区四区| 亚洲午夜剧场| 蜜臀av一区二区在线免费观看| 欧美黑人xxx| 豆花视频一区二区| 国产99午夜精品一区二区三区 | 国产91精品在线播放| 91精品国产成人观看| 亚洲一区二三| 同产精品九九九| 不卡一二三区| 国产精品夜夜夜一区二区三区尤| 国产成人精品一区二区三区四区| www插插插无码视频网站| 欧美在线高清视频| 免费精品国产| 欧美尤物一区| 日韩一区中文字幕| 蜜桃视频成人m3u8| 久久一区免费| 无码av免费一区二区三区试看| 激情黄产视频在线免费观看| 亚洲专区在线视频| 亚洲精品水蜜桃| 538在线观看| 亚洲三区在线观看| 91国偷自产一区二区开放时间| 精品欧美午夜寂寞影院| 国内外成人激情免费视频| 狠狠网亚洲精品| 天天色天天射天天综合网| 日韩免费av片在线观看| 99精品视频一区| 悠悠资源网亚洲青| 人妻激情另类乱人伦人妻| 精品精品欲导航| 牛夜精品久久久久久久99黑人| 成人综合av| 精品视频在线播放免| 波多野结衣在线一区二区| 日本一区二区精品| 欧美日韩国产精选| 鲁大师影院一区二区三区| 免费在线看v| 国产精品白嫩美女在线观看| 亚洲电影第三页| 国产伦精品一区二区三区千人斩 | 成年人免费在线视频| 国产成人精品免费久久久久| 亚洲人成亚洲人成在线观看图片| 日韩激情片免费| 美女性感视频久久| 精品国产午夜肉伦伦影院| 特级西西人体www高清大胆| 少妇高潮久久77777| 国产精一区二区三区| 久久天堂久久| 丁香婷婷自拍| 91精品国产综合久久香蕉最新版 | 欧美日韩国产亚洲沙发| 久久久久se| 日韩在线观看你懂的| 久久亚洲一级片| 国产精区一区二区| 东北一级毛片| 欧美精彩一区二区三区| 亚洲风情亚aⅴ在线发布| 三级成人在线视频| 1区2区3区在线视频| www国产精品内射老熟女| 欧美在线视频一区| 日韩电影在线免费看| 在线免费av资源| 中文在线а√天堂官网| 成人午夜视频免费观看| 国产福利久久精品| 国产做受高潮69| 亚洲美女动态图120秒| 亚洲一区二区av在线| 日韩精品一卡| 最新精品在线| 亚洲精品福利电影| 婷婷五月在线视频| 经典三级在线| 天堂а√在线8种子蜜桃视频| 一区二区xxx| 东京热加勒比无码少妇| 国产日本在线播放| 国产卡一卡二在线| 中文字幕中文字幕在线中一区高清| 91中文字幕一区| 亚洲一区二区三区视频播放| 开心色怡人综合网站| 亚洲欧美日韩精品| 欧美国产1区2区| 成人看片爽爽爽| 日日摸天天爽天天爽视频| 国产精品久久久久高潮| 在线观看亚洲专区| 久久久99精品久久| 国产亚洲一区| 亚洲欧洲另类| 六月丁香婷婷激情| 国产va免费精品高清在线| 亚洲国产精品久久人人爱蜜臀| 日韩视频在线观看| 国产丝袜在线| 一区二区三区不卡在线| 97成人精品区在线播放| 国产一区二区三区免费视频| 久久亚洲二区三区| 欧美中文日韩| 精品一区二区三区中文字幕老牛| 婷婷综合六月| 国产天堂在线播放视频| 巨大荫蒂视频欧美另类大| 女人体1963| 国产精品视频一二三四区| 91在线免费看片| 依依成人精品视频| 欧美激情一二三区| 国产一本一道久久香蕉| 国产伦理一区| 亚洲激情欧美| 99亚洲视频| 成人免费观看视频| 国产成人在线网站| 开心九九激情九九欧美日韩精美视频电影| 99国产精品一区二区| 日韩精品中文字幕第1页| 国产一区二区三区91| 亚洲精品tv久久久久久久久久| 福利一区二区免费视频| av女在线播放| 奇米777日韩| 欧美黄色一级| 盗摄系列偷拍视频精品tp| 国产午夜一区| 九九九久久久精品| 精品在线观看视频| 97se亚洲国产综合自在线观| 91亚洲男人天堂| 亚洲精品videosex极品| 欧美三级日韩在线| 亚洲**2019国产| 亚洲综合一区二区不卡| 久久综合中文色婷婷| 日韩国产小视频| 日本一区二区三区在线观看视频| 亚洲免费在线精品一区| 国产91视频一区| 国产一级激情| 欧美激情办公室videoshd| 国产在线天堂www网在线观看| 高清国产一区二区三区四区五区| 99精品热视频只有精品10| 极品美女销魂一区二区三区| 成人午夜在线视频| 亚洲国产乱码最新视频| 亚洲人午夜精品| 国产精品亚洲片夜色在线| 蜜臀在线观看| 爱搞国产精品| 欧美久色视频| 国产欧美精品一区二区色综合| 国产在线观看福利| 国产美女被遭强高潮免费网站| √最新版天堂资源网在线| 99国产精品久久久久久久成人热| 26uuuu精品一区二区| 在线日韩国产精品| 人体精品一二三区| 免费观看国产视频在线| 亚洲精品一区二区三区蜜桃久| 男女激情网站| 天堂久久一区| 理论电影国产精品| 3d动漫精品啪啪1区2区免费 | 在线看视频不卡| 国产黄色一区| 国产精品99久久久久久久vr| 精品欧美一区二区三区精品久久| 91精品在线看| 亚洲成人影院少妇| 国产一区二区三区天码| 亚洲天堂久久久久久久|