91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

程序員神器VS Code再提速將內置JS減小20%!

OSC開源社區 ? 來源:OSC開源社區 ? 2023-07-30 09:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Visual Studio Code 最近將其內置的 JavaScript 大小減少了 20%,節省了超過 3.9 MB。這種減少不僅降低了下載和存儲需求,而且由于在運行 JavaScript 之前需要掃描的源代碼更少,因此也提高了啟動速度。這個減小是通過一個新的構建步驟 “名稱混淆壓縮” 實現的,而非刪除任何代碼或進行重大重構。

ff3bf892-2e16-11ee-815d-dac502259ad0.png? ff621108-2e16-11ee-815d-dac502259ad0.png

workbench.js 隨時間變化大小,右側兩個下降點:VS Code 1.74 第一大跌幅結果來源于混淆壓縮私有屬性,VS Code 1.80 第二小跌幅來源于混淆壓縮 export。

混淆壓縮私有屬性

混淆壓縮源碼后 JavaScript 仍包含許多長標識符名稱如 extensionIgnoredRecommendationsService。作者本來以為 esbuild 已經將這些標識符簡化了,比如:

const someLongVariableName = 123;

console.log(someLongVariableName);

變為更短的:

const x = 123;

console.log(x);

由于 JavaScript 以源文本形式發布,減少標識符名稱的長度實際上可以減小程序的大小。這種優化可能看起來有些荒謬,但在 JavaScript 世界里確實頂瓜瓜。

盡管 esbuild 實現了混淆功能,默認情況下只有當確定混淆不會改變代碼行為時才對名稱進行處理。

因此,在實踐中,esbuild 只對局部變量名和參數名進行處理。

也就是說,esbuild 這種保守策略意味著許多無法確認是否安全修改名稱被忽略了。

怎么辦呢?

作者團隊最終利用 TypeScript 對混淆代碼進行驗證,正如 TypeScript 可以在常規代碼中捕獲未知的屬性訪問一樣,TypeScript 編譯器能夠捕獲到一個屬性已經被混淆但對它的引用沒有正確更新的情況。

解決思路:可以將 TypeScript 源碼進行混淆,然后使用被改變標識符名稱的新 TypeScript 進行編譯。這種方式會使得對于是否無意間破壞了代碼有更高的把握。

同時,通過使用 TypeScript,可以真正找到所有私有屬性(而不是僅以 _ 開始的屬性),甚至還可以利用 TypeScript 的現有重命名功能來智能地重命名符號,而不會意外改變對象形狀。

他們提出了新的大致工作流程: 使用 TypeScript's AST 針對每個在代碼庫中發現的私有或受保護屬性:

如果該屬性需要被修改:

通過尋找未使用過的符號名稱計算出一個新名稱

使用 TypeScript 生成所有引用該屬性的重命名編輯 將所有重命名編輯應用于 TypeScript 源碼 編譯帶有修改過名稱的新編輯過的 Typescript 資源 結果大部分有效。

當然,也有一些例外需要處理:

當前類內唯一性并不能滿足要求,在超類和子類之間也必須具備唯一性。根本原因是 TypeScripts 私有關鍵字只是一個編譯時裝飾器,并不能真正防止超級和子類訪問私有屬性。

如果不小心處理,則可能導致重新命名時產生名稱沖突(幸運地是 Typescript 將其報告為錯誤)。

在某些情況下,子類公開繼承自父類受保護權限,在很多例子里面都屬于錯誤操作,需要禁止此處進行混淆。

這樣構建成功后,混淆私有屬性后 VS Code 主要 workbench.js 文件大小從 12.3MB 降低至 10.6MB , 減少近 14%。這也帶來 5% 加載速度提高,因為需要掃描文本量減少。

混淆壓縮 export

另一方面,其實 provideWorkspaceTrustExtensionProposals 等長名字,或者 localize 函數(用于 UI 顯示字符串)明顯還有改善空間。

針對它的處理是:導出符號名稱。只要導出僅供內部使用,就可以縮短它們而不改變代碼行為。

最終,經過優化,總體上文件比沒有進行名稱壓縮小了 20%。

在整個 VS Code 中,名稱壓縮從編譯源碼移除 3.9MB JavaScript 代碼,這既降低了下載大小和安裝大小,也使每次啟動 VS Code 需要掃描 JS 代碼量減少 3.9MB。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA語言
    +關注

    關注

    0

    文章

    138

    瀏覽量

    20696
  • javascript
    +關注

    關注

    0

    文章

    525

    瀏覽量

    54821
  • AST
    AST
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2403
  • vscode
    +關注

    關注

    1

    文章

    169

    瀏覽量

    8514

原文標題:程序員神器VS Code再提速,將內置JS減小20%!

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何在VS Code中使用瑞薩RA系列MCU

    VS Code(Visual Studio Code)是微軟公司出品,它是一個免費且多功能的代碼編輯器,幾乎支持所有主要的編程語言和框架。特別是最近又新加了Github Copilot功能,讓用戶
    的頭像 發表于 04-16 14:02 ?2810次閱讀
    如何在<b class='flag-5'>VS</b> <b class='flag-5'>Code</b>中使用瑞薩RA系列MCU

    阿里云升級通義靈碼AI程序員,全面上線

    近日,阿里云宣布其備受矚目的通義靈碼AI程序員已正式全面上線,為開發者帶來更為強大和便捷的編程輔助工具。 此次上線的通義靈碼AI程序員,在功能上實現了全面升級。現在,它支持VS Code
    的頭像 發表于 01-09 11:16 ?715次閱讀

    使用MCUXpresso for VS Code插件開發Zephyr的hello world

    本期來到Zephyr實戰經驗演練,小編帶著大家一起使用MCUXpresso for VS Code插件來開發一個屬于Zephyr的hello world。
    的頭像 發表于 01-03 09:21 ?1261次閱讀
    使用MCUXpresso for <b class='flag-5'>VS</b> <b class='flag-5'>Code</b>插件開發Zephyr的hello world

    TMS320C6000程序員指南

    電子發燒友網站提供《TMS320C6000程序員指南.pdf》資料免費下載
    發表于 12-24 17:19 ?0次下載
    TMS320C6000<b class='flag-5'>程序員</b>指南

    TMS320C55x DSP CPU程序員參考補充

    電子發燒友網站提供《TMS320C55x DSP CPU程序員參考補充.pdf》資料免費下載
    發表于 12-21 11:36 ?3次下載
    TMS320C55x DSP CPU<b class='flag-5'>程序員</b>參考補充

    Zephyr領進門系列:MCUXPresso for VS Code插件安裝

    VS Code正在走進廣大程序員的心中。 下載地址:https://code.??visualstudio??.com/download 2. 安裝
    的頭像 發表于 12-19 09:53 ?2045次閱讀
    Zephyr領進門系列:MCUXPresso for <b class='flag-5'>VS</b> <b class='flag-5'>Code</b>插件安裝

    UCD3138A64/UCD3138128程序員手冊

    電子發燒友網站提供《UCD3138A64/UCD3138128程序員手冊.pdf》資料免費下載
    發表于 12-09 14:42 ?0次下載
    UCD3138A64/UCD3138128<b class='flag-5'>程序員</b>手冊

    ?IAR C-SPY為VS Code社區樹立調試新標準

    全球領先的嵌入式系統開發軟件解決方案供應商IAR宣布,對VS Code中的調試擴展IAR C-SPY調試器進行了重大升級。此次升級引入了IAR的Listwindow技術,進一步提升了調試能力,使IAR C-SPY調試器在VS
    的頭像 發表于 12-06 10:27 ?717次閱讀

    AWTK-WEB 快速入門(2) - JS 應用程序

    導讀AWTK可以使用相同的技術棧開發各種平臺的應用程序。有時我們需要使用Web界面與設備進行交互,本文介紹一下如何使用JS語言開發AWTK-WEB應用程序。用AWTKDesigner新建一個應用
    的頭像 發表于 12-05 01:04 ?503次閱讀
    AWTK-WEB 快速入門(2) - <b class='flag-5'>JS</b> 應用<b class='flag-5'>程序</b>

    機械革命發布CODE AI程序員

    近日,英特爾新質生產力技術生態大會在成都舉行,機械革命作為重要參展商帶來了多款明星產品引爆全場!其中更是在AI PC軟件生態產品發布分論壇上,Intel、智譜、機械革命三方聯合發布了專為程序員設計的CODE AI程序員本,成為本
    的頭像 發表于 11-30 10:34 ?1108次閱讀

    Linux驅動程序程序員指南

    電子發燒友網站提供《Linux驅動程序程序員指南.pdf》資料免費下載
    發表于 11-22 15:53 ?0次下載
    Linux驅動<b class='flag-5'>程序</b><b class='flag-5'>程序員</b>指南

    AI編程工具會不會搶程序員飯碗

    AI編程工具可輔助編程,減少手動編碼,提升效率,對程序員有積極影響也有挑戰。程序員需深化技能、拓寬知識應對。長遠看,AI與人類程序員將共生共榮。
    的頭像 發表于 11-08 10:17 ?533次閱讀

    第五屆長沙·中國1024程序員節開幕

    據官方媒體報道,10月24日;? 第五屆長沙·中國1024程序員節在湖南湘江新區開幕;本次中國1024程序員節以“智能應用新生態”為主題。設置有岳麓對話、技術英雄會、主題峰會及賽事、展覽等活動,一場
    的頭像 發表于 10-25 15:42 ?498次閱讀

    【AG32開發板體驗連載】網絡攝像頭

    篇】 對于入門者開發環境配置稍微繁瑣點,對于老鳥來說,電腦里基本都安裝了這些軟件,只要稍微配置一下即可使用 需要以下環境: 1、VS Code程序員必備) 2、Python (這個基本也是
    發表于 10-11 14:54

    Microchip發布面向VS Code的MPLAB擴展早期體驗版本

    為充分利用Microsoft Visual Studio Code (VS Code) 的多功能性,Microchip Technology(微芯科技公司)發布面向VS
    的頭像 發表于 08-28 10:01 ?1188次閱讀
    主站蜘蛛池模板: 亚洲 欧美 动漫 | 校园 春色 欧美 另类 小说 | 办公室桌震娇喘视频大全在线 | 男女做性无遮挡免费视频 | 在线视频影院 | 永久网站色视频在线观看免费 | 成人精品第一区二区三区 | 四虎永久精品视频在线 | 国产精品欧美一区二区三区 | 成人欧美一区二区三区 | 国产精品15p | 亚洲xxx视频 | 欧洲亚洲国产精华液 | 日韩1级片 | 亚洲四虎永久在线播放 | 视频黄色在线 | www亚洲免费| 窝窝午夜看片成人精品 | 鲁老汉精品视频在线观看 | 潘金莲国产三级视频在线 | 色婷五月 | 午夜看片在线观看 | 第四色视频 | 免费一区二区 | 最近国语剧情视频在线观看 | 久久99热久久精品99 | 免费一级片在线 | 久久综合九色综合欧美狠狠 | 亚洲色图国产精品 | 国产日本三级在线播放线观看 | 一级不卡毛片免费 | 精品视频在线观看视频免费视频 | 夜夜天天操 | 午夜小视频在线 | 亚洲影院手机版777点击进入影院 | 噜噜噜久久久 | 在线资源站 | 欧美丝袜一区 | 成年网站在线在免费播放 | 天天操女人 | 天堂看动漫 |