本技術(shù)涉及數(shù)據(jù)處理,尤其涉及一種圖標(biāo)集加載方法、裝置、電子設(shè)備及介質(zhì)。
背景技術(shù):
1、前端的圖標(biāo)集方案,目前業(yè)界普遍采用iconfont,或者采用組件庫(kù)中提供的圖標(biāo),也同樣是基于iconfont的變式。iconfont以圖標(biāo)集的方式加載和展現(xiàn)圖標(biāo),其靈感源于早期框架bootstrap等主流前端ui(user?interface,用戶(hù)界面)框架,iconfont加入自由成組,自定義生產(chǎn)圖標(biāo)集的方式,在當(dāng)時(shí)確實(shí)是最優(yōu)解。但隨著前端工程的不斷碎片化,每個(gè)組件都有可能單獨(dú)引入、按需打包,對(duì)于整包引入使用的這種方式,會(huì)與現(xiàn)有的架構(gòu)設(shè)計(jì)有許多沖突。
2、對(duì)于圖標(biāo)集加載來(lái)說(shuō),總會(huì)有請(qǐng)求發(fā)出,一些項(xiàng)目為了圖標(biāo)集的格式兼容性,選擇使用多種圖標(biāo)集格式來(lái)處理瀏覽器的兼容問(wèn)題。假如組件中的icon都是獨(dú)立的圖標(biāo)集,那么一個(gè)完整的頁(yè)面,或許會(huì)有非常多的圖標(biāo)集請(qǐng)求發(fā)出。當(dāng)圖標(biāo)集需要更新時(shí),可能需要重新生成整個(gè)字體文件,并替換現(xiàn)有的文件。這個(gè)過(guò)程可能會(huì)比較繁瑣,并且如果一個(gè)頁(yè)面中存在2個(gè)相同名字的圖標(biāo)集庫(kù),就會(huì)出現(xiàn)無(wú)法解決的沖突,進(jìn)一步導(dǎo)致圖標(biāo)加載過(guò)程緩慢,造成圖標(biāo)加載效率極低,影響使用者的體驗(yàn)感。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例的主要目的在于提出一種圖標(biāo)集加載方法、裝置、電子設(shè)備及介質(zhì),避免出現(xiàn)兩個(gè)圖標(biāo)沖突的情況,提高圖標(biāo)加載效率。
2、為實(shí)現(xiàn)上述目的,本技術(shù)實(shí)施例的第一方面提出了一種圖標(biāo)集加載方法,所述方法包括:
3、獲取圖標(biāo)庫(kù)中的圖標(biāo)文件,其中,所述圖標(biāo)文件包括多個(gè)圖標(biāo)元素;
4、響應(yīng)于資源加載請(qǐng)求,確定與所述資源加載請(qǐng)求對(duì)應(yīng)的待加載圖標(biāo)元素;
5、對(duì)所述圖標(biāo)文件中的所述待加載圖標(biāo)元素進(jìn)行標(biāo)記處理,得到標(biāo)記圖標(biāo)元素;
6、基于預(yù)設(shè)的編譯工具對(duì)標(biāo)記處理后的圖標(biāo)文件進(jìn)行掃描,得到標(biāo)記圖標(biāo)元素集合;
7、根據(jù)所述標(biāo)記圖標(biāo)元素集合生成字體格式文件以及層疊樣式表,并將所述字體格式文件引入所述層疊樣式表;
8、通過(guò)引入后的所述字體格式文件對(duì)所有所述標(biāo)記圖標(biāo)元素進(jìn)行類(lèi)名映射,得到圖標(biāo)類(lèi)名映射表;
9、根據(jù)所述圖標(biāo)類(lèi)名映射表對(duì)所述待加載圖標(biāo)元素進(jìn)行類(lèi)名替換,得到加載結(jié)果。
10、在一些實(shí)施例中,所述基于預(yù)設(shè)的編譯工具對(duì)標(biāo)記處理后的圖標(biāo)文件進(jìn)行掃描,得到標(biāo)記圖標(biāo)元素集合,包括:
11、通過(guò)預(yù)設(shè)的編譯工具創(chuàng)建邏輯插件,并將所述邏輯插件掛載至所述編譯工具的編譯器實(shí)例,其中,所述邏輯插件用于訪問(wèn)所述編譯器實(shí)例中的信息;
12、通過(guò)所述編譯工具對(duì)標(biāo)記處理后的圖標(biāo)文件進(jìn)行掃描,并收集所述圖標(biāo)文件中的所有標(biāo)記圖標(biāo)元素,得到標(biāo)記圖標(biāo)元素集合。
13、在一些實(shí)施例中,所述根據(jù)所述標(biāo)記圖標(biāo)元素集合生成字體格式文件以及層疊樣式表,包括:
14、通過(guò)預(yù)設(shè)的圖標(biāo)字體生成工具對(duì)所述標(biāo)記圖標(biāo)元素集合中的標(biāo)記圖標(biāo)元素進(jìn)行字體轉(zhuǎn)換,得到字體格式文件和層疊樣式表。
15、在一些實(shí)施例中,所述通過(guò)引入后的所述字體格式文件對(duì)所有所述標(biāo)記圖標(biāo)元素進(jìn)行類(lèi)名映射,得到圖標(biāo)類(lèi)名映射表,包括:
16、對(duì)于所述標(biāo)記圖標(biāo)元素集合中的每個(gè)標(biāo)記圖標(biāo)元素,通過(guò)引入后的所述字體格式文件提取所述標(biāo)記圖標(biāo)元素的標(biāo)記圖標(biāo)類(lèi)名,并通過(guò)預(yù)設(shè)的編程工具生成隨機(jī)哈希值;
17、將所述標(biāo)記圖標(biāo)類(lèi)名與所述隨機(jī)哈希值進(jìn)行結(jié)合,生成目標(biāo)類(lèi)名;
18、對(duì)所有所述目標(biāo)類(lèi)名進(jìn)行整理,得到圖標(biāo)類(lèi)名映射表。
19、在一些實(shí)施例中,所述根據(jù)所述圖標(biāo)類(lèi)名映射表對(duì)所述待加載圖標(biāo)元素進(jìn)行類(lèi)名替換,得到加載結(jié)果,包括:
20、對(duì)于每個(gè)所述待加載圖標(biāo)元素,獲取所述待加載圖標(biāo)元素的圖標(biāo)類(lèi)名;
21、通過(guò)所述圖標(biāo)類(lèi)名映射表查找與所述圖標(biāo)類(lèi)名對(duì)應(yīng)的標(biāo)記圖標(biāo)類(lèi)名;
22、根據(jù)所述標(biāo)記圖標(biāo)類(lèi)名替換所述待加載圖標(biāo)元素的圖標(biāo)類(lèi)名,得到加載結(jié)果。
23、在一些實(shí)施例中,在根據(jù)所述圖標(biāo)類(lèi)名映射表對(duì)所述待加載圖標(biāo)元素進(jìn)行類(lèi)名替換,得到加載結(jié)果之后,所述方法還包括:
24、根據(jù)所述加載結(jié)果更新所述標(biāo)記圖標(biāo)元素集合,得到目標(biāo)圖標(biāo)元素集合;
25、對(duì)所述標(biāo)記圖標(biāo)元素集合和所述目標(biāo)圖標(biāo)元素集合進(jìn)行差異對(duì)比;
26、若所述標(biāo)記圖標(biāo)元素集合與所述目標(biāo)圖標(biāo)元素集合存在差異,在所述目標(biāo)圖標(biāo)元素集合中確定新增圖標(biāo)元素,并根據(jù)所述新增圖標(biāo)元素生成目標(biāo)字體格式文件,并將所述目標(biāo)字體格式文件引入所述層疊樣式表。
27、在一些實(shí)施例中,所述對(duì)所述圖標(biāo)文件中的所述待加載圖標(biāo)元素進(jìn)行標(biāo)記處理,得到標(biāo)記圖標(biāo)元素,包括:
28、對(duì)所述圖標(biāo)文件進(jìn)行查找操作,以查找出所述圖標(biāo)文件中的待加載圖標(biāo)元素;
29、基于預(yù)設(shè)的標(biāo)記字符對(duì)所述待加載圖標(biāo)元素進(jìn)行標(biāo)記操作,得到標(biāo)記圖標(biāo)元素。
30、為實(shí)現(xiàn)上述目的,本技術(shù)實(shí)施例的第二方面提出了一種圖標(biāo)集加載裝置,所述裝置包括:
31、數(shù)據(jù)獲取模塊,用于獲取圖標(biāo)庫(kù)中的圖標(biāo)文件,其中,所述圖標(biāo)文件包括多個(gè)圖標(biāo)元素;
32、接收請(qǐng)求模塊,用于響應(yīng)于資源加載請(qǐng)求,確定與所述資源加載請(qǐng)求對(duì)應(yīng)的待加載圖標(biāo)元素;
33、標(biāo)記處理模塊,用于對(duì)所述圖標(biāo)文件中的所述待加載圖標(biāo)元素進(jìn)行標(biāo)記處理,得到標(biāo)記圖標(biāo)元素;
34、元素掃描模塊,用于基于預(yù)設(shè)的編譯工具對(duì)標(biāo)記處理后的圖標(biāo)文件進(jìn)行掃描,得到標(biāo)記圖標(biāo)元素集合;
35、文件生成模塊,用于根據(jù)所述標(biāo)記圖標(biāo)元素集合生成字體格式文件以及層疊樣式表,并將所述字體格式文件引入所述層疊樣式表;
36、類(lèi)名映射模塊,用于通過(guò)引入后的所述字體格式文件對(duì)所有所述標(biāo)記圖標(biāo)元素進(jìn)行類(lèi)名映射,得到圖標(biāo)類(lèi)名映射表;
37、類(lèi)名替換模塊,用于根據(jù)所述圖標(biāo)類(lèi)名映射表對(duì)所述待加載圖標(biāo)元素進(jìn)行類(lèi)名替換,得到加載結(jié)果。
38、為實(shí)現(xiàn)上述目的,本技術(shù)實(shí)施例的第三方面提出了一種電子設(shè)備,一種電子設(shè)備,所述電子設(shè)備包括存儲(chǔ)器和處理器,所述存儲(chǔ)器存儲(chǔ)有計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如第一方面所述的圖標(biāo)集加載方法。
39、為實(shí)現(xiàn)上述目的,本技術(shù)實(shí)施例的第四方面提出了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如第一方面所述的圖標(biāo)集加載方法。
40、本技術(shù)提出的圖標(biāo)集加載方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì),首先,獲取圖標(biāo)庫(kù)中的圖標(biāo)文件,并且圖標(biāo)文件中包括多個(gè)圖標(biāo)元素,響應(yīng)于資源加載請(qǐng)求,在圖標(biāo)文件中確定與資源加載請(qǐng)求對(duì)應(yīng)的待加載圖標(biāo)元素,再對(duì)圖標(biāo)文件中的待加載圖標(biāo)元素進(jìn)行標(biāo)記處理,將需要使用的待加載圖標(biāo)元素標(biāo)記出來(lái),得到標(biāo)記圖標(biāo)元素,便于后續(xù)針對(duì)標(biāo)記圖標(biāo)元素進(jìn)行處理,基于預(yù)設(shè)的編譯工具對(duì)標(biāo)記處理后的圖標(biāo)文件進(jìn)行掃描,得到標(biāo)記圖標(biāo)元素集合,從而實(shí)現(xiàn)對(duì)所有已經(jīng)標(biāo)記的標(biāo)記圖標(biāo)元素的收集,之后,根據(jù)標(biāo)記圖標(biāo)元素集合生成字體格式文件以及層疊樣式表,并將字體格式文件引入層疊樣式表,從而能夠確保相同標(biāo)記圖標(biāo)元素的圖標(biāo)一致性,并且通過(guò)將字體格式文件引入層疊樣式表能夠減小網(wǎng)絡(luò)開(kāi)銷(xiāo),便于對(duì)圖標(biāo)元素的樣式的統(tǒng)一管理,能夠減少重復(fù)加載,提高頁(yè)面加載速度,再通過(guò)引入后的字體格式文件對(duì)所有標(biāo)記圖標(biāo)元素進(jìn)行類(lèi)名映射,得到圖標(biāo)類(lèi)名映射表,從而確保每個(gè)圖標(biāo)的類(lèi)名都是唯一的,避免多個(gè)項(xiàng)目中使用相同圖標(biāo)名導(dǎo)致的命名沖突,最后,根據(jù)圖標(biāo)類(lèi)名映射表對(duì)待加載圖標(biāo)元素進(jìn)行類(lèi)名替換,從而能夠正確展示需要加載的圖標(biāo)元素,并且通過(guò)直接對(duì)待加載圖標(biāo)元素的類(lèi)名進(jìn)行替換不會(huì)污染圖標(biāo)庫(kù)中的現(xiàn)有樣式,得到加載結(jié)果,隔絕了外部樣式污染,并且能夠避免出現(xiàn)圖標(biāo)沖突的情況,進(jìn)一步提高圖標(biāo)的加載效率,提高用戶(hù)的體驗(yàn)感。