[發(fā)明專(zhuān)利]一種JS代碼的裁剪方法、裝置、介質(zhì)和電子設(shè)備有效
| 申請(qǐng)?zhí)枺?/td> | 202010006693.0 | 申請(qǐng)日: | 2020-01-03 |
| 公開(kāi)(公告)號(hào): | CN111240684B | 公開(kāi)(公告)日: | 2023-04-11 |
| 發(fā)明(設(shè)計(jì))人: | 鄔亮;趙汝軍 | 申請(qǐng)(專(zhuān)利權(quán))人: | 北京字節(jié)跳動(dòng)網(wǎng)絡(luò)技術(shù)有限公司 |
| 主分類(lèi)號(hào): | G06F8/41 | 分類(lèi)號(hào): | G06F8/41;G06F9/445 |
| 代理公司: | 北京國(guó)昊天誠(chéng)知識(shí)產(chǎn)權(quán)代理有限公司 11315 | 代理人: | 馬瑞 |
| 地址: | 100041 北京市石景山區(qū)*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 js 代碼 裁剪 方法 裝置 介質(zhì) 電子設(shè)備 | ||
1.一種JS代碼的裁剪方法,其特征在于,包括:
在打包器的加載器中調(diào)用自定義轉(zhuǎn)換函數(shù);
在所述自定義轉(zhuǎn)換函數(shù)中解析文件的抽象語(yǔ)法樹(shù),得到用于對(duì)JS代碼進(jìn)行裁剪的裁剪依賴(lài)信息,并調(diào)用定制化轉(zhuǎn)換函數(shù);
在所述定制化轉(zhuǎn)換函數(shù)中根據(jù)所述裁剪依賴(lài)信息和第一裁剪目標(biāo)對(duì)所述JS代碼的所述抽象語(yǔ)法樹(shù)進(jìn)行轉(zhuǎn)換,得到符合所述第一裁剪目標(biāo)的第一裁剪后JS代碼;
其中,在所述在所述定制化轉(zhuǎn)換函數(shù)中根據(jù)所述裁剪依賴(lài)信息和第一裁剪目標(biāo)對(duì)所述JS代碼的所述抽象語(yǔ)法樹(shù)進(jìn)行轉(zhuǎn)換,得到符合所述第一裁剪目標(biāo)的第一裁剪后JS代碼之后,還包括:
通過(guò)重寫(xiě)源碼對(duì)應(yīng)的第二抽象語(yǔ)法樹(shù),對(duì)裁剪目標(biāo)進(jìn)行配置,得到第二裁剪目標(biāo),在所述定制化轉(zhuǎn)換函數(shù)中根據(jù)所述裁剪依賴(lài)信息和第二裁剪目標(biāo)對(duì)所述JS代碼的所述抽象語(yǔ)法樹(shù)進(jìn)行轉(zhuǎn)換,得到符合所述第二裁剪目標(biāo)的第二裁剪后JS代碼,其中,所述第二裁剪目標(biāo)是與所述第二裁剪后JS代碼匹配的。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述得到用于對(duì)JS代碼進(jìn)行裁剪的裁剪依賴(lài)信息之后,所述方法還包括:
讀取所述裁剪依賴(lài)信息;其中,
所述裁剪依賴(lài)信息至少包括以下一項(xiàng):
使用過(guò)的類(lèi)名信息、使用過(guò)的函數(shù)名信息。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述在打包器的加載器中調(diào)用自定義轉(zhuǎn)換函數(shù)之前,所述方法還包括:
配置裁剪插件,并在所述裁剪插件中設(shè)置所述加載器。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述在所述裁剪插件中設(shè)置所述加載器包括:
在所述裁剪插件中給JS模塊設(shè)置對(duì)應(yīng)的加載器;和/或,
在所述裁剪插件中給JS的超集TS模塊設(shè)置對(duì)應(yīng)的加載器。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述在所述定制化轉(zhuǎn)換函數(shù)中根據(jù)所述裁剪依賴(lài)信息和第一裁剪目標(biāo)對(duì)所述JS代碼的所述抽象語(yǔ)法樹(shù)進(jìn)行轉(zhuǎn)換,得到符合所述第一裁剪目標(biāo)的第一裁剪后JS代碼之前,所述方法還包括:
讀取所述第一裁剪目標(biāo),其中,所述第一裁剪目標(biāo)是與所述第一裁剪后JS代碼匹配的。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在所述讀取所述第一裁剪目標(biāo)之前,所述方法還包括:
通過(guò)重寫(xiě)源碼對(duì)應(yīng)的第一抽象語(yǔ)法樹(shù),對(duì)裁剪目標(biāo)進(jìn)行配置,得到所述第一裁剪目標(biāo)。
7.一種JS代碼的裁剪裝置,其特征在于,包括:
自定義轉(zhuǎn)換函數(shù)調(diào)用單元,用于在打包器的加載器中調(diào)用自定義轉(zhuǎn)換函數(shù);
解析單元,用于在所述自定義轉(zhuǎn)換函數(shù)調(diào)用單元調(diào)用的所述自定義轉(zhuǎn)換函數(shù)中解析文件的抽象語(yǔ)法樹(shù),得到用于對(duì)JS代碼進(jìn)行裁剪的裁剪依賴(lài)信息;
定制化轉(zhuǎn)換函數(shù)調(diào)用單元,用于調(diào)用定制化轉(zhuǎn)換函數(shù);
轉(zhuǎn)換單元,用于在所述定制化轉(zhuǎn)換函數(shù)調(diào)用單元調(diào)用的所述定制化轉(zhuǎn)換函數(shù)中根據(jù)所述解析單元解析出的所述裁剪依賴(lài)信息和第一裁剪目標(biāo)對(duì)所述JS代碼的所述抽象語(yǔ)法樹(shù)進(jìn)行轉(zhuǎn)換,得到符合所述第一裁剪目標(biāo)的第一裁剪后JS代碼;
其中,所述裝置還包括:配置單元,用于在所述轉(zhuǎn)換單元在所述定制化轉(zhuǎn)換函數(shù)調(diào)用單元調(diào)用的所述定制化轉(zhuǎn)換函數(shù)中根據(jù)所述解析單元解析的所述裁剪依賴(lài)信息和第一裁剪目標(biāo)對(duì)所述JS代碼的所述抽象語(yǔ)法樹(shù)進(jìn)行轉(zhuǎn)換,得到符合所述第一裁剪目標(biāo)的第一裁剪后JS代碼之后,通過(guò)重寫(xiě)源碼對(duì)應(yīng)的第二抽象語(yǔ)法樹(shù),對(duì)裁剪目標(biāo)進(jìn)行配置,得到第二裁剪目標(biāo);
其中,轉(zhuǎn)換單元,還用于在所述定制化轉(zhuǎn)換函數(shù)調(diào)用單元調(diào)用的所述定制化轉(zhuǎn)換函數(shù)中根據(jù)所述解析單元解析的所述裁剪依賴(lài)信息和第二裁剪目標(biāo)對(duì)所述JS代碼的所述抽象語(yǔ)法樹(shù)進(jìn)行轉(zhuǎn)換,得到符合所述第二裁剪目標(biāo)的第二裁剪后JS代碼,其中,所述第二裁剪目標(biāo)是與所述第二裁剪后JS代碼匹配的。
8.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至6中任一項(xiàng)所述的方法。
9.一種電子設(shè)備,其特征在于,包括:
一個(gè)或多個(gè)處理器;
存儲(chǔ)裝置,用于存儲(chǔ)一個(gè)或多個(gè)程序,當(dāng)所述一個(gè)或多個(gè)程序被所述一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得所述一個(gè)或多個(gè)處理器實(shí)現(xiàn)如權(quán)利要求1至6中任一項(xiàng)所述的方法。
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于北京字節(jié)跳動(dòng)網(wǎng)絡(luò)技術(shù)有限公司,未經(jīng)北京字節(jié)跳動(dòng)網(wǎng)絡(luò)技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010006693.0/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- JS文件處理方法和裝置
- 一種JS代碼的測(cè)試方法、存儲(chǔ)介質(zhì)、設(shè)備和系統(tǒng)
- 一種JS代碼的測(cè)試方法、存儲(chǔ)介質(zhì)、設(shè)備和系統(tǒng)
- 分布式的JS文件篡改監(jiān)控方法、系統(tǒng)、設(shè)備及存儲(chǔ)介質(zhì)
- 在IOS應(yīng)用內(nèi)調(diào)用函數(shù)的方法及系統(tǒng)
- 一種可擴(kuò)展的游戲構(gòu)建方法、游戲運(yùn)行方法和存儲(chǔ)介質(zhì)
- 一種提高腳本的加載效率的方法及終端
- 一種應(yīng)用程序依賴(lài)的JS代碼與原生庫(kù)兼容的方法及終端
- JS代碼防重復(fù)注入方法、裝置、計(jì)算機(jī)設(shè)備及存儲(chǔ)介質(zhì)
- 原生應(yīng)用調(diào)用JS的方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 遙控器代碼格式結(jié)構(gòu)及其收發(fā)信方法及裝置
- 在虛擬機(jī)中驗(yàn)證代碼模塊的方法及裝置
- 一種用于代碼的管理方法及裝置
- 虛擬代碼提供系統(tǒng)、生成裝置、驗(yàn)證裝置、提供方法
- 一種自動(dòng)化代碼質(zhì)量檢查方法及系統(tǒng)
- 代碼掃描方法、裝置、計(jì)算設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)
- 用于更新代碼的方法和裝置
- 前端代碼打包方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 一種代碼審查服務(wù)同步方法、裝置及計(jì)算機(jī)設(shè)備
- 一種高效智能源代碼安全管理平臺(tái)
- 一種數(shù)據(jù)庫(kù)讀寫(xiě)分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線(xiàn)程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





