System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种组件优化方法、装置、电子设备及存储介质制造方法及图纸_技高网

一种组件优化方法、装置、电子设备及存储介质制造方法及图纸

技术编号:40901278 阅读:5 留言:0更新日期:2024-04-18 11:19
本申请提供一种组件优化方法、装置、电子设备及存储介质,该方法包括:将待优化的单文件组件转换为抽象语法树;从抽象语法树中定位函数调用节点;判断函数调用节点中的变量标识符节点是否被响应式函数调用;若是,则将该函数调用节点转换为对象节点。在上述方案的实现过程中,通过从待优化的单文件组件转换的抽象语法树定位函数调用节点,并将被响应式函数调用的函数调用节点转换为对象节点,使得这些对象节点不再是在调用函数之后才获取具体值的响应式变量,减少了响应式变量以及动态获取的计算资源,从而有效地提高了浏览器响应操作请求的速度。

【技术实现步骤摘要】

本申请涉及计算机,具体而言,涉及一种组件优化方法、装置、电子设备及存储介质


技术介绍

1、单文件组件是指前端组件化框架(例如vue框架)所支持的单文件,例如vue框架可以将单文件作为一个组件使用,vue框架通常将web页面的模板、样式(style)和逻辑代码封装在一个文件中。

2、目前,单文件组件是封装有模板、样式和逻辑代码的,在单文件组件中的逻辑代码里有响应式变量,这些响应式变量会在浏览器响应于用户操作界面触发的操作请求之后,动态地调用函数来获取该变量的具体值。在具体的实践过程中发现,随着单文件组件中的逻辑代码里的响应式变量越来越多,导致浏览器响应操作请求的速度也越来越慢。


技术实现思路

1、本申请实施例的目的在于提供一种组件优化方法、装置、电子设备及存储介质,用于改善浏览器响应操作请求的速度慢的问题。

2、本申请实施例提供了一种组件优化方法,包括:将待优化的单文件组件转换为抽象语法树;从抽象语法树中定位函数调用节点;判断函数调用节点中的变量标识符节点是否被响应式函数调用;若是,则将该函数调用节点转换为对象节点。在上述方案的实现过程中,通过从待优化的单文件组件转换的抽象语法树定位函数调用节点,并将被响应式函数调用的函数调用节点转换为对象节点,使得这些对象节点不再是在调用函数之后才获取具体值的响应式变量,减少了响应式变量以及动态获取的计算资源,从而有效地提高了浏览器响应操作请求的速度。

3、可选地,在本申请实施例中,在将待优化的单文件组件转换为抽象语法树之前,还包括:使用正则表达式对单文件组件所属的应用项目文件进行匹配,获得待优化的单文件组件。在上述方案的实现过程中,通过使用正则表达式对单文件组件所属的应用项目文件进行匹配,从而提高了获得待优化的单文件组件的效率。

4、可选地,在本申请实施例中,将待优化的单文件组件转换为抽象语法树,包括:从单文件组件中匹配出预设编程语言代码;将预设编程语言代码解析成抽象语法树。在上述方案的实现过程中,通过从单文件组件中匹配出预设编程语言代码,并将预设编程语言代码解析成抽象语法树,以便于抽象语法树定位出函数调用节点,从而提高了函数调用节点的定位效率。

5、可选地,在本申请实施例中,从抽象语法树中定位函数调用节点,包括:从抽象语法树中提取出setup函数节点;从setup函数节点中定位出函数调用节点。在上述方案的实现过程中,通过从抽象语法树中提取出setup函数节点,并从setup函数节点中定位出函数调用节点,从而提高了函数调用节点的定位效率。

6、可选地,在本申请实施例中,从抽象语法树中提取出setup函数节点,包括:判断该抽象语法树中的树节点的名称属性是否为setup字符串;若是,则将该树节点确定为setup函数节点。在上述方案的实现过程中,通过在该抽象语法树中的树节点的名称属性是setup字符串的情况下,就将该树节点确定为setup函数节点,从而有效地提高了setup函数节点的提取效率。

7、可选地,在本申请实施例中,setup函数节点,包括:多个变量定义节点;从setup函数节点中定位出函数调用节点,包括:针对多个变量定义节点中的每个变量定义节点,判断该变量定义节点的init属性和callee属性是否满足预设条件,预设条件包括:init属性是一个callexpression节点,且callexpression节点的name属性是ref或reactive,且callee属性是一个identifier节点;若是,则将该变量定义节点确定为函数调用节点。

8、可选地,在本申请实施例中,判断函数调用节点中的变量标识符节点是否被响应式函数调用,包括:根据函数调用节点查找变量标识符节点,以及该变量标识符节点的引用路径;判断该变量标识符节点的引用路径中是否包含预设响应式函数名称;若是,则确定函数调用节点中的变量标识符节点被响应式函数调用,否则,确定函数调用节点中的变量标识符节点没有被响应式函数调用。在上述方案的实现过程中,通过在确定函数调用节点中的变量标识符节点被响应式函数调用的情况下,将被响应式函数调用的函数调用节点转换为对象节点,使得这些对象节点不再是在调用函数之后才获取具体值的响应式变量,减少了响应式变量以及动态获取的计算资源,从而有效地提高了浏览器响应操作请求的速度。

9、本申请实施例还提供了一种组件优化装置,包括:文件组件转换模块,用于将待优化的单文件组件转换为抽象语法树;调用节点定位模块,用于从抽象语法树中定位函数调用节点;节点调用判断模块,用于判断函数调用节点中的变量标识符节点是否被响应式函数调用;对象节点转换模块,用于若函数调用节点中的变量标识符节点被响应式函数调用,则将该函数调用节点转换为对象节点。

10、可选地,在本申请实施例中,组件优化装置,还包括:单文件组件获得模块,用于使用正则表达式对单文件组件所属的应用项目文件进行匹配,获得待优化的单文件组件。

11、可选地,在本申请实施例中,文件组件转换模块,包括:编程语言代码匹配子模块,用于从单文件组件中匹配出预设编程语言代码;编程语言代码解析子模块,用于将预设编程语言代码解析成抽象语法树。

12、可选地,在本申请实施例中,调用节点定位模块,包括:函数节点提取子模块,用于从抽象语法树中提取出setup函数节点;函数节点定位子模块,用于从setup函数节点中定位出函数调用节点。

13、可选地,在本申请实施例中,函数节点提取子模块,包括:名称属性判断单元,用于判断该抽象语法树中的树节点的名称属性是否为setup字符串;函数节点确定单元,用于若该树节点的名称属性是setup字符串,则将该树节点确定为setup函数节点。

14、可选地,在本申请实施例中,setup函数节点,包括:多个变量定义节点;函数节点查找子模块,包括:定义节点判断单元,用于针对多个变量定义节点中的每个变量定义节点,判断该变量定义节点的init属性和callee属性是否满足预设条件,预设条件包括:init属性是一个callexpression节点,且callexpression节点的name属性是ref或reactive,且callee属性是一个identifier节点;函数节点确定单元,用于若该变量定义节点的init属性和callee属性满足预设条件,则将该变量定义节点确定为函数调用节点。

15、可选地,在本申请实施例中,节点调用判断模块,包括:标识路径查找子模块,用于根据函数调用节点查找变量标识符节点,以及该变量标识符节点的引用路径;引用路径判断子模块,用于判断该变量标识符节点的引用路径中是否包含预设响应式函数名称;函数调用确定子模块,用于若该变量标识符节点的引用路径中包含预设响应式函数名称,则确定函数调用节点中的变量标识符节点被响应式函数调用,若该变量标识符节点的引用路径中没有包含预设响应式函数名称,确定函数调用节点中的变量标识符节点没有被响应式函数调用。

16、本本文档来自技高网...

【技术保护点】

1.一种组件优化方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,在所述将待优化的单文件组件转换为抽象语法树之前,还包括:

3.根据权利要求1所述的方法,其特征在于,所述将待优化的单文件组件转换为抽象语法树,包括:

4.根据权利要求1所述的方法,其特征在于,所述从所述抽象语法树中定位函数调用节点,包括:

5.根据权利要求4所述的方法,其特征在于,所述从所述抽象语法树中提取出setup函数节点,包括:

6.根据权利要求4所述的方法,其特征在于,所述setup函数节点,包括:多个变量定义节点;所述从所述setup函数节点中定位出函数调用节点,包括:

7.根据权利要求1-6任一所述的方法,其特征在于,所述判断所述函数调用节点中的变量标识符节点是否被响应式函数调用,包括:

8.一种组件优化装置,其特征在于,包括:

9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的方法。

10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的方法。

...

【技术特征摘要】

1.一种组件优化方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,在所述将待优化的单文件组件转换为抽象语法树之前,还包括:

3.根据权利要求1所述的方法,其特征在于,所述将待优化的单文件组件转换为抽象语法树,包括:

4.根据权利要求1所述的方法,其特征在于,所述从所述抽象语法树中定位函数调用节点,包括:

5.根据权利要求4所述的方法,其特征在于,所述从所述抽象语法树中提取出setup函数节点,包括:

6.根据权利要求4所述的方法,其特征在于,所述setup函数节点,包括:多个变量定义节点;所述从所...

【专利技术属性】
技术研发人员:陈荣辉孙勇军王志伟周斌
申请(专利权)人:上海识装信息科技有限公司
类型:发明
国别省市:

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

1