基于Vite的web字体文件压缩方法、装置及其应用制造方法及图纸

技术编号:38003620 阅读:10 留言:0更新日期:2023-06-30 10:17
本申请提出了基于Vite的web字体文件压缩方法、装置及其应用,包括以下步骤:在开发项目内将vite

【技术实现步骤摘要】
基于Vite的web字体文件压缩方法、装置及其应用


[0001]本申请涉及前端开发
,特别是涉及基于Vite的web字体文件压缩方法、装置及其应用。

技术介绍

[0002]Vite是下一代前端开发与构建工具,是一个面向JavaScript和TypeScript的开发者的构建工具,旨在通过提供快速构建、编译和部署的体验,来帮助前端开发者更快速地开发应用。Vite意在提供开箱即用的配置,同时它的插件API和JavaScript API带来了高度的可扩展性,并有完整的类型支持。其主要有由两部分组成:
[0003]1.一个开发服务器,它基于原生ES模块提供了丰富的内建功能,如速度快到惊人的模块热更新(HMR)。
[0004]2.一套构建指令,它使用Rollup打包代码,并且它是预配置的,可输出用于生产环境的高度优化过的静态资源。
[0005]Vite利用了浏览器对于原生ESM(ES Module)的支持,以原生ESM方式提供源码。这实际上是让浏览器接管了打包程序的部分工作。Vite只需要在浏览器请求源码时进行转换并按需提供源码。根据情景动态导入代码,即只在当前屏幕上实际使用时才会被处理。因此,极大提高了开发环境下的启动速度,也使其成为当下最流行的前端开发构建工具之一。并且Vite提供了丰富的插件API(接口能力),可供开发者在实际项目开发过程中结合Vite开发出多种多样的插件。
[0006]Fontmin是一种字体子集化方案实现开源库。它提供了一种在nodejs环境下,通过调用Fontmin.run()方法可以将庞大的web字体源文件按照配置的文本集合进行按需切割为子集字体文件的方法。一定程度上解决了项目内应用web字体时,源字体文件过大导致的网页白屏、加载慢、卡顿等问题,影响用户体验。
[0007]目前在日常web项目开发中,随着用户对网站页面美观度要求提高,导致了web字体在项目开发中被广泛应用。但随之而来的问题出现了,由于web字体特别是中文字体文件非常庞大(因为汉字不像英文字母,种类繁多),一般能达到5M甚至10M+。这就导致极大地拖累了网页加载速度,造成白屏时间长、卡顿等问题。而Fontmin虽然提供了一种web字体子集化方案,但其仅支持在nodejs下手动运行程序进行切割生成。也就是在项目开发完成部署前,需要提前确定并复制所有使用字体的文本集合到fontmin执行程序中,将源字体文件与目标切割文本配置好,再运行程序将生成的切割后的字体文件拷贝到开发的项目当中。缺点显而易见,需要手动维护且很繁琐。若项目需求更迭,导致使用到字体的文案变更,则需要重复上述步骤进行重新生成并替换字体文件。
[0008]为此在当前技术趋势下,Vite由于其卓越的性能优势与开发体验,逐渐成为前端项目开发中最主流的构建工具之一。在此背景下,若能结合上Vite的天然性能优势再通过解耦配置的方式来实现自动对项目内字体进行扫描压缩与热更新,这将极大推动当前环境下的前端项目开发中字体压缩方案的发展。然而目前还未有技术能够解决该问题,因此本
申请提出基于Vite的web字体文件压缩方法、装置及其应用,来解决现有技术存在的问题。

技术实现思路

[0009]本申请实施例提供了基于Vite的web字体文件压缩方法、装置及其应用,针对目前技术无法结合Vite来解决字体压缩的问题。
[0010]本专利技术核心技术主要是基于Vite,借助Vite插件的形式灵活地通过自定义配置作用到开发项目当中。通过简单的Vite插件配置,并设置自定义项目字体转换参数,达到最小化字体文件的效果。
[0011]第一方面,本申请提供了基于Vite的web字体文件压缩方法,所述方法包括以下步骤:
[0012]S00、在开发项目内将Vite的vite

plugin

subfont插件引入并添加到Vite的配置文件中,设置vite

plugin

subfont插件的配置参数;
[0013]S10、将vite

plugin

subfont插件的入口参数设置为对象数组形式,数组的每一项对应一种字体配置;
[0014]S20、通过Vite的钩子函数load()将字体命名样式引入到项目中,以生成虚拟样式;
[0015]S30、根据配置参数,通过Vite的钩子函数transform()进行扫描匹配操作,以获得目标文件的内容代码;
[0016]S40、将获得的所有内容代码分类收集后得到文本集合;
[0017]S50、将文本集合和配置参数传入Fontmin,通过Fontmin构建压缩生成最终的子集字体文件。
[0018]进一步地,S10步骤中,每一项数组内每一项配置的可选参数包括name参数、scan参数、src参数及dev参数,name参数为String类型,表示字体样式名,scan参数为Glob正则类型,表示需要扫描的目标文本的文件范围,src参数为String类型,表示原字体文件路径,且为必填项,dev参数为Object类型,表示指定是否在开发模式下生效。
[0019]进一步地,S10步骤中,dev参数包括open属性和dest属性,open属性为Boolean类型,用于表示是否开启字体文件压缩,dest属性为String类型,用于在开发模式下压缩字体文件生成文件夹路径。
[0020]进一步地,S20步骤的具体步骤为:
[0021]定义样式虚拟模块的名称;
[0022]通过钩子函数load()传入的对象数组形式的配置参数,进行遍历得到每项字体的配置;
[0023]判断每一项配置内的dev参数的dest属性是否开启;
[0024]若未开启,则使用src参数的属性值作为项目的字体命名样式内部的字体文件路径;若开启,则使用开发模式下压缩字体文件生成的文件夹路径;
[0025]将配置中的name参数的属性设为字体样式值,以通过拼接字符串的方法生成字体声明样式代码;
[0026]生成虚拟样式中规则的类名,并将拼接完毕后的字体声明样式代码在钩子函数load()尾部返回,以生成虚拟样式。
[0027]进一步地,S30步骤的具体步骤为:
[0028]根据配置参数的scan参数的扫描范围,与文件路径进行匹配;
[0029]将匹配成功的文件进行代码转换并替换,以获得目标文件的内容代码。
[0030]进一步地,S50步骤中,若开启开发环境压缩,则将本步骤与S30步骤的文本扫描匹配同步执行,以保持扫描文本与生成字体文件的热更新。
[0031]进一步地,S50步骤中,若在构建环境下,将dest属性设置为原文件路径并覆盖。可以达到最小化硬盘占用,实现自动对web字体文件的转换替换。
[0032]第二方面,本申请提供了一种基于Vite的web字体文件压缩装置,包括:
[0033]配本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于Vite的web字体文件压缩方法,其特征在于,包括以下步骤:S00、在开发项目内将Vite的vite

plugin

subfont插件引入并添加到Vite的配置文件中,设置所述vite

plugin

subfont插件的配置参数;S10、将所述vite

plugin

subfont插件的入口参数设置为对象数组形式,数组的每一项对应一种字体配置;S20、通过Vite的钩子函数load()将字体命名样式引入到项目中,以生成虚拟样式;S30、根据配置参数,通过Vite的钩子函数transform()进行扫描匹配操作,以获得目标文件的内容代码;S40、将获得的所有内容代码分类收集后得到文本集合;S50、将所述文本集合和所述配置参数传入Fontmin,通过Fontmin构建压缩生成最终的子集字体文件。2.如权利要求1所述的基于Vite的web字体文件压缩方法,其特征在于,S10步骤中,每一项数组内每一项配置的可选参数包括name参数、scan参数、src参数及dev参数,所述name参数为String类型,表示字体样式名,所述scan参数为Glob正则类型,表示需要扫描的目标文本的文件范围,所述src参数为String类型,表示原字体文件路径,且为必填项,所述dev参数为Object类型,表示指定是否在开发模式下生效。3.如权利要求2所述的基于Vite的web字体文件压缩方法,其特征在于,S10步骤中,所述dev参数包括open属性和dest属性,所述open属性为Boolean类型,用于表示是否开启字体文件压缩,所述dest属性为String类型,用于在开发模式下压缩字体文件生成文件夹路径。4.如权利要求3所述的基于Vite的web字体文件压缩方法,其特征在于,S20步骤的具体步骤为:定义样式虚拟模块的名称;通过钩子函数load()传入的对象数组形式的配置参数,进行遍历得到每项字体的配置;判断每一项配置内的dev参数的dest属性是否开启;若未开启,则使用src参数的属性值作为项目的字体命名样式内部的字体文件路径;若开启,则使用开发模式下压缩字体文件生成的文件夹路径;将配置中的name参数的属性设为字体样式值,以通过拼接字符...

【专利技术属性】
技术研发人员:李圣权周涛牛宇鹏洪凯赵昀
申请(专利权)人:城云科技中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1