CN114895908A - 基于Web应用表达式的实现方法及系统、设备和存储介质 - Google Patents
基于Web应用表达式的实现方法及系统、设备和存储介质 Download PDFInfo
- Publication number
- CN114895908A CN114895908A CN202210538161.0A CN202210538161A CN114895908A CN 114895908 A CN114895908 A CN 114895908A CN 202210538161 A CN202210538161 A CN 202210538161A CN 114895908 A CN114895908 A CN 114895908A
- Authority
- CN
- China
- Prior art keywords
- expression
- data
- type
- interpretation
- character string
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于Web应用表达式的实现方法及系统、设备和存储介质。其中基于Web应用的表达式实现方法具体包括:响应于用户输入的表达式,选中需要进行操作的表达式进行解析,获取表达式的解析结果;提取表达式对应的字符串写入解析结果中执行数据解释,根据数据解释结果,遍历数据解释后的表达式的数据类型,获取编辑器的待补全变量类型,根据待补全变量类型和预设类型方法,获取表达式的代码补全提示信息;根据补全提示信息实现代码补全。通过本申请提出的技术方案,可以支持响应式数据变更、实现代码的自动补全,进一步提升了开发人员的开发效率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及基于Web应用表达式的实现方法及系统、设备和存储介质。
背景技术
低代码开发模式是近年来流行的一种企业软件快速开发技术和工具,凭借其低门槛、高效率和易集成等特性,受到越来越多软件开发团队与企业的青睐,并应用于多种场景中。适用于低代码开发的领域以客户端应用为主,而在不同的客户端形态中,又以Web客户端应用最为广泛。通过图形化配置绝大部分应用逻辑之后,仍然可以通过编写少量代码的形式完善应用逻辑,并应用于多种场景中。适用于低代码开发的领域以客户端应用为主,而在不同的客户端形态中,又以Web客户端应用最为广泛。因此目前已有的Web低代码应用开发方案均不同程度的支持编写、嵌入JavaScript代码片段。
现有技术中,低代码应用中有更为清晰的数据状态管理,编写JavaScript代码片段的方式为直接输入,而客户端在应用开发中,一般存在响应式数据变更的需求,JavaScript代码片段的直接输入,不支持响应式的表达式输入及数据变更,代码自动补全能力弱也就无法使用户获得最佳开发效率。例如地,当填写一个表单时,表单的校验结果随填写过程不断更新,这一需求在低代码开发中还缺少好的实现方式,许多产品的实现只支持编写单一合法JavaScript表达式,不支持内嵌进,限制了代码片段的灵活性。
发明内容
根据现有技术中面临低代码开发过程代码补全能力弱,不支持响应式数据变更等问题,本发明提供了一种基于Web应用表达式的实现方法和系统、设备和存储介质。
在本申请的第一方面提供了一种基于Web应用表达式的实现方法,具体包括:
响应于用户输入的表达式,表达式至少包括若干个字符串;
选中需要进行操作的表达式进行解析,获取表达式的解析结果;
提取表达式对应的字符串写入解析结果中执行数据解释,返回数据解释结果;
根据数据解释结果,遍历数据解释后的表达式的数据类型,获取编辑器的待补全变量类型,编辑器配置有集数据源,集数据源包括支持编辑器补全的变量集数据源和函数集数据源;
根据待补全变量类型和预设类型方法,获取表达式的代码补全提示信息;
根据补全提示信息实现代码补全。
在上述第一方面的一种可能的实现中,响应于用户输入的表达式包括:
获取用户输入的表达式的访问数据类型列表,建立表达式与Web应用的状态数据之间的依赖关系表;
基于依赖关系表响应于用户输入的表达式。
在上述第一方面的一种可能的实现中,
选中需要进行操作的表达式进行解析包括:
获取用于解析预设字符串的预设解析规则,预设字符串包括零个或者多个输入的表达式;
根据预设解析规则,依次将预设字符串解析为对应的常规字符串和/或动态表达式。
在上述第一方面的一种可能的实现中,提取表达式对应的字符串写入解析结果中执行数据解释包括:
根据表达式中的数据搭建沙盒环境,在沙盒环境中生成用于执行数据解释的容器,以获取表达式对应的字符串的数据解释的结果。
在上述第一方面的一种可能的实现中,提取表达式对应的字符串写入解析结果中执行数据解释还包括:
建立状态数据与用户输入的表达式之间的订阅关系;
根据订阅关系更新表达式对应的数据解析的数据解释。
在上述第一方面的一种可能的实现中,遍历数据解释后的表达式的数据类型,获取编辑器的待补全变量类型包括:
构建出变量集数据源与函数集数据源类型对应的关系图表,关系图表的起点边界处包括第一类型特征;
根据第一类型特征依次获取终点边界处的第二类型特征,生成为表达式的待补全变量类型。
在上述第一方面的一种可能的实现中,预设类型方法支持待补全变量类型。
本申请的第二方面提供了一种基于Web应用表达式的实现系统,应用于前述表达式的实现方法中,其特征在于,包括:
响应单元:用于响应于用户输入的表达式,表达式至少包括若干个字符串;
解析单元,用于根据选中需要进行操作的表达式进行解析,获取表达式的解析结果;
解释单元,用于提取表达式对应的字符串写入解析结果中执行数据解释,返回数据解释结果;
获取单元,用于根据数据解释结果,遍历数据解释后的表达式的数据类型,获取编辑器的待补全变量类型,集数据源包括支持编辑器补全的变量集数据源和函数集数据源;
补全提示单元,用于根据待补全变量类型和预设类型方法,获取表达式的代码补全提示信息;
实现单元,用于根据补全提示信息实现代码补全。
本申请的第三方面提供了一种电子设备,包括:
存储器,存储器用于存储处理程序;
处理器,处理器执行处理程序时实现如前述的基于Web应用表达式的实现方法。
本申请的第四方面提供了一种可读存储介质,包括:可读存储介质上存储有处理程序,处理程序被处理器执行时实现如前述的基于Web应用表达式的实现方法。
本申请提出的技术方案,具备以下有益技术效果:
当客户端应用开发过程中,通过建立用户输入的表达式与数据源集之间的对应关系,建立依赖关系表,实现支持用户响应式的表达式的输入,实时获取用户表达式的更新,实现表达式的实时解析和解释;通过对输入的表达式进行数据解析和解释,获取表达式的解释结果,根据数据解释的结果获取编辑器的待补全变量类型,开发人员根据待补全变量类型及预设类型方法实现编辑器代码的补全,支持响应式数据变更、实现代码的自动补全,进一步提升了开发人员的开发效率。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1根据本申请实施例,示出了一种基于Web应用表达式的实现方法的流程示意图;
图2根据本申请实施例,示出了一种基于Web应用表达式的实现系统的框图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
具体地,图1根据本申请的一些实施例,示出了一种基于Web应用表达式的实现方法的流程示意图,具体包括:
步骤100:响应于用户输入的表达式,表达式至少包括若干个字符串。可以理解的是,于Web应用的客户端应用开发中,往往有响应式数据变更的需求,当用户在输入若干个字符串或者其他类型的表达式时,用户输入的表达式随时根据客户端的代码实时更新。
于本申请的一些实施例中,用户输入的表达式包括可以包括静态字符串,动态表达式等在此不做限定。
于上述步骤100中,响应于用户输入的表达式包括:获取用户输入的表达式的访问数据类型列表,建立表达式与Web应用的状态数据之间的依赖关系表;基于依赖关系表响应于用户输入的表达式。可以理解的是,由于JavaScript本身没有响应式机制,当需要对用户输入的表达式进行实时响应的情况下,可以选择Proxy技术,劫持对数据源集各部分对应数据访问,获取访问数据类型列表,将根据访问类型列表与输入的表达式之间对应的建立依赖关系表,根据依赖关系表实现对于用户输入表达式的实时响应。
在本申请的一些实施例中,为了实现用户输入的表达式可以被客户端实时响应需要同时保存低代码Web应用中所有的状态数据,状态数据可以包括所有的状态数据,例如内存中的数据、通过网络请求的数据、浏览器本地缓存中的数据、浏览器本地持久化存储中的数据等。
例如地,当用户在网站登录的过程中,需要根据当前页面的刷新实现验证码、图片、验证数据等的输入,用户的表达式输入实时变化,于Web应用中,可以通过Proxy技术,劫持对数据源集各部分对应数据的访问,实现用户输入的表达式与状态数据之间形成映射关系,生成对应的依赖关系表,响应于用户实时输入的表达式。
于本申请的一些实施例中,对于实现状态数据各部分对应数据的访问,本领域技术人员也可以根据需要,选择通过其他的方法数据源集各部分对应数据的访问,在此不做限定。
步骤200:选中需要进行操作的表达式进行解析,获取表达式的解析结果。可以理解的是,解析是的目的是在Web服务器上执行脚本时评估其语法,可以将脚本代码转换为可读代码在浏览器中执行代码时发现的目标代码或显示语法错误,通过对表达式的解析获取对用户输入表达式的数据源集对应的特征内容,解析后可以将用户输入的表达式中的字符串原字符串转换为一组字符串及一组子表达式。
于上述步骤200中,选中需要进行操作的表达式进行解析包括:获取用于解析预设字符串的预设解析规则,预设字符串包括零个或者多个输入的表达式;
根据预设解析规则,依次将预设字符串解析为对应的常规字符串和/或动态表达式。
可以理解的是,解析表达式时,通过对用户输入的表达式的字符串按照预设字符串的预设解析规则遍历表达式字符串。具体地,例如,预设解析规则可以为到动态变量入口符号“{”时创建子表达式记录,遇到出口符号“}”时结束当前的变量表达式记录或者子表达式。
于本申请的一些实施例中,需要执行解释的字符串可以包括零个或者多个表达式,在此不做限定。
于本申请的一些实施例中,对于用户输入的表达式进行解析可以通过包括LALR(Look-Ahead Left-to-Right)、LR((Left-to-right)等算法解析用户表达式中对应特征的内容,在此不做限定。
其中,对于表达式的解析包括将用户输入的表达式解析为对应的静态字符串、动态字符串等,具体地,可以根据用户实际属于的字符串而定。
在本申请的一些实施例中,约定在字符串中可以{{符号起始,}}符号结尾的内容为动态表达式,一个字符串中可以包含零个、一个或者多个表达式,根据用户的输入而定,在此不做限定。
步骤300:提取表达式对应的字符串写入解析结果中执行数据解释,返回数据解释结果。可以理解的是,解释表达式包括词法分析、源文件处理、对象解释、与浏览器交互、系统资源管理等。词法分析将用户输入的表达式以字符串的方式读入,并将其分为若干个记号,记号于自然语言中的单词类似。例如地,将JavaScript语言的单词分为标识符、字符串、整数、浮点数、布尔值、运算符等,解释执行负责按照语句的语义对表达式语句进行逐条解释执行,控制程序顺序执行过程,执行过程中调用语句解释器解释执行单条语句,并根据解释结果控制程序的继续执行或终止,同时负责处理词法分析、语法分析及解释执行过程中出现的错误,如果用户输入的表达式词法语法不符合JavaScript语言的规则,或者执行时出现错误,则终止执行或者程序返回,最终按照输入的表达式形成包括若干个单条语句、静态字符串或者动态字符串的解释执行。
于本申请的一些实施例中,每种类型的语句都对应一个语句解释器,根据语句类型完成相应的语义动作,子句表达式的解释器完成在语句执行过程中组成语句的各种表达式的运算,按照表达式的预设解析规则找出子表达式进行归约最终得出表达式的运算结果,实现JavaScript语言基于对象的特性,它包含对象的引用、方法调用和事件处理;在对象解释过程中,通过对象属性值的变化、对象的方法调用或事件处理完成与浏览器的交互等。
于上述步骤300中,根据表达式中的数据搭建沙盒环境,在沙盒环境中生成用于执行数据解释的容器,以获取表达式包括的字符串的数据解释的结果。可以理解的是,执行表达式的解释时,会将响应式数据源中的数据与JavaScript中的常量一并搭建一个沙盒环境,于沙盒环境中实现隔离正在运行程序,保证程序运行环境的安全性,沙盒环境可以用于执行未经测试或不受信任的程序或代码,并且为待执行的程序创建一个独立的执行环境,内部程序的执行不会影响到外部程序的运行,以保证输入的表达式的数据解释与安全的隔离环境中实现。
于本申请的一些实施例中,并在沙盒中通过JavaScript原生的with和eval进行执行,得到表达式解释的结果。具体地,使用with声明可以去掉执行上下文对象的前缀,with会在作用域链的顶端添加一个新的作用域,该作用域的变量对象会加入with传入的对象,相较于外部环境其内部的代码在查找变量时会优先在该对象上进行查找,eval函数可将字符串转换为代码执行,并返回一个或多个值,实现表达式即对应字符串的解释,数据解释的结果包括常规字符串、动态表达式等。
于本申请的一些实施例中,本领域技术人员也可以根据实际需求,选择其他的沙盒环境比如iframe、Sandbox Escape来实现相应的数据解释,在此不做限定。
于本申请的一些实施例中,通过浏览器JS引擎的evaluate语义进行执行。例如,表达式为{api.data.length},数据源集中有一个名为api的变量,执行数据解释时会将api代入表达式中,得到JS引擎的执行结果。
于上述步骤300中,提取表达式对应的变量集数据源写入解析结果执行数据解释还包括:建立状态数据与用户输入的表达式之间的订阅关系;根据订阅关系更新表达式对应的数据解析的数据解释。可以理解的是,订阅关系指数据源的变化事件以及变化时的最新值。实现步骤可以为:数据源集创建时,通过JS Proxy机制封装数据源,当对数据源触发getter获取具体值时,记录为一次订阅关系。订阅的目的是在数据源发生变化时,自动触发表达式的重新计算,实现低代码总部基于Web应用各处渲染最新的数据结果。
步骤400:根据数据解释结果,遍历数据解释后的表达式的数据类型,获取编辑器的待补全变量类型,编辑器配置有集数据源,集数据源包括支持编辑器补全的变量集数据源和函数集数据源。
可以理解的是,计算代码中的类型是JS引擎的基础语义,可以通过typeof等方式获得数据的类型,开发人员根据实际需要选择待补全的代码或者根据低代码应用中表达式缺失的数据类型实现将待匹配字符串自动组成补全作为编辑器的内容写入低代码应用场景的程序中。
其中,数据类型包括JavaScript语言中所有的数据类型。
于上述步骤400中,遍历数据解释后的表达式的数据类型,获取编辑器的待补全变量类型包括:构建出变量集数据源与函数集数据源类型对应的关系图表,关系图表的起点边界处包括第一类型特征;根据第一类型特征依次获取终点边界处的第二类型特征,生成为表达式的待补全变量类型。可以理解的是,将表达式解释结果对应的相关包括变量集数据源、函数集数据源,根据出入口关系构建出一个图关系,并在图关系的每条边上根据类型转移的特征,根据起点边界的第一类型特征,推断终点边界变量类型,将终点边界的第二类型特征作为待补全变量类型,依次最终完成整个图关系的类型标记,得到用户输入表达式中待补全变量类型的推断结果。
于本申请的一些实施例中,编辑器配置有表达式补全的相关信息,包括支持表达式补全的变量集数据源、函数集数据源,比如可以包括代码补全的参数信息、属性信息、内容信息等。
步骤500:根据待补全变量类型和预设类型方法,获取表达式的代码补全提示信息。
可以理解的是,在开发人员对于根据编辑器中输入的表达式进行补全时,需要根据用户输入的表达式的变量集数据源中需要补全的变量类型,以及支持该特定类型的方法实现获取表达式的代码补全提示信息。
于本申请的一些实施例中,预设类型方法支持待补全变量类型。具体地,预设的方法指JS对特定类型支持的方法。例如number类型的值,就有toFixed,toString等一系列方法。
步骤600:根据补全提示信息实现代码补全。可以理解的是,开发人员在编辑器中进行代码补全时,满足当前的待补全变量类型和预设类型方法的代码补全可以包括若干个,该若干个均可以作为代码补全的提示信息,开发人员可以根据实际的需要选择需要实现代码补全。
于本申请的一些实施例中,低代码应用开发作为一种提升研发效率的方式,而在Web客户端的开发中,JavaScript是唯一由浏览器原生支持的编程语言,为了提升低代码的Web开发场景中的代码编写效率,代码编辑器中通常会面向开发人员提供代码补全功能,开发人员在代码编辑器进行代码编辑时,代码编辑器可以根据开发人员输入的代码字符,自动匹配并输出开发人员可能需要的代码字符,开发人员可以根据代码需要直接选择输出该代码字符进行补全,从而可以减少开发人员的输入的代码量,提升开发人员的代码编辑速度。
下述将结合具体的应用场景,对本申请的具体实现过程进行进一步的阐述和说明:
以输入表达式为例:Hello{name};
解析会将表达式解析为[‘Hello’,{expr:‘name’}]两部分,“‘Hello’”是一个静态字符串,‘name’是一个子表达式或者动态表达式。
表达式的解释会将上一步的两部分进行处理,静态字符串不需要解释,维持原状,子表达式根据数据源进行解释,假设数据源中有变量name,值为‘World’,解释的结果就为‘World’。两者合并后得到最终解释结果Hello World。
此时,代码补全时从数据源中获得变量name和类型string两个信息。
当在表达式中输入{name.}时,因为“.”的含义是访问变量的属性,所以会根据相关的提示信息补全string类型的所有属性,例如地,根据开发人员需求,输入“.”可以实现补全toUpperCase这个方法,编辑器根据代码补全的提示信息实现代码的补全。
在本申请的一些实施例中,图2示出了一种基于Web应用表达式的实现系统的流程框图,应用于前述基于Web应用表达式的实现方法中。具体包括:
响应单元10:用于响应于用户输入的表达式,表达式至少包括若干个字符串;
解析单元20,用于根据选中需要进行操作的表达式进行解析,获取表达式的解析结果;
解释单元30,用于提取表达式对应的字符串写入解析结果中执行数据解释,返回数据解释结果;
获取单元40,用于根据数据解释结果,遍历数据解释后的表达式的数据类型,获取编辑器的待补全变量类型,集数据源包括支持编辑器补全的变量集数据源和函数集数据源;
补全提示单元50,用于根据待补全变量类型和预设类型方法,获取表达式的代码补全提示信息;
实现单元60,用于根据补全提示信息实现代码补全。
可以理解的是,上述实现系统各个功能模块执行与前述基于Web应用表达式的实现方法相同的步骤流程,在此不做赘述。
在本申请的一些实施例中,还提供了一种电子设备。该种电子设备中包含存储器和处理器,其中存储器用于对处理程序进行存储,处理器则根据指令对处理程序进行执行。当处理器对处理程序进行执行时,使得前述实施例中的基于Web应用表达式的实现方法得以实现。
本申请提出的技术方案涉及方法、装置、系统、电子设备、计算机可读存储介质和/或计算机程序产品。计算机程序产品可以包括用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
当客户端应用开发过程中,通过建立用户输入的表达式与数据源集之间的对应关系,建立依赖关系表,实现支持用户响应式的表达式的输入,实时获取用户表达式的更新,实现表达式的实时解析和解释;通过对输入的表达式进行数据解析和解释,获取表达式的解释结果,根据数据解释的结果获取编辑器的待补全变量类型,开发人员根据待补全变量类型及预设类型方法实现编辑器代码的补全,支持响应式数据变更、实现代码的自动补全,进一步提升了开发人员的开发效率。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种基于Web应用表达式的实现方法,其特征在于,所述的方法包括:
响应于用户输入的表达式,所述表达式至少包括若干个字符串;
选中需要进行操作的所述表达式进行解析,获取所述表达式的解析结果;
提取所述表达式对应的所述字符串写入所述解析结果中执行数据解释,并返回数据解释结果;
根据所述数据解释结果,遍历数据解释后的所述表达式的数据类型,获取编辑器的待补全变量类型,所述编辑器配置有集数据源,所述集数据源包括支持所述编辑器补全的变量集数据源和函数集数据源;
根据所述待补全变量类型和预设类型方法,获取所述表达式的代码补全提示信息;
根据所述补全提示信息实现代码补全。
2.根据权利要求1所述的一种基于Web应用表达式的实现方法,其特征在于,响应于用户输入的表达式包括:
获取用户输入的所述表达式的访问数据类型列表,建立所述表达式与所述Web应用的状态数据之间的依赖关系表;
基于所述依赖关系表响应于所述用户输入的所述表达式。
3.根据权利要求1所述的一种基于Web应用表达式的实现方法,其特征在于,选中需要进行操作的所述表达式进行解析包括:
获取用于解析预设字符串的预设解析规则,所述预设字符串包括零个或者多个输入的所述表达式;
根据所述预设解析规则,依次将所述预设字符串解析为对应的常规字符串和/或动态表达式。
4.根据权利要求2所述的一种基于Web应用表达式的实现方法,其特征在于,提取所述表达式对应的字符串写入所述解析结果中执行数据解释包括:
根据所述表达式中的数据搭建沙盒环境,在所述沙盒环境中生成用于执行数据解释的容器,以获取所述表达式对应的所述字符串的数据解释的结果。
5.根据权利要求2所述的一种基于Web应用表达式的实现方法,其特征在于,提取所述表达式对应的字符串写入所述解析结果中执行数据解释还包括:
建立所述状态数据与所述用户输入的表达式之间的订阅关系;
根据所述订阅关系更新所述表达式对应的所述数据解析的数据解释。
6.根据权利要求1所述的一种基于Web应用表达式的实现方法,其特征在于,遍历数据解释后的所述表达式的所述数据类型,获取编辑器的待补全变量类型包括:
构建出所述变量集数据源与所述函数集数据源类型对应的关系图表,所述关系图表的起点边界处包括第一类型特征;
根据所述第一类型特征依次获取终点边界处的第二类型特征,生成为所述表达式的所述待补全变量类型。
7.根据权利要求1所述的一种基于Web应用表达式的实现方法,其特征在于,所述预设类型方法支持所述待补全变量类型。
8.一种基于Web应用表达式的实现系统,应用于如权利要求1-7任一所述的表达式的实现方法中,其特征在于,所述的系统包括:
响应单元:用于响应于用户输入的表达式,所述表达式至少包括若干个字符串;
解析单元,用于根据选中需要进行操作的所述表达式进行解析,获取所述表达式的解析结果;
解释单元,用于提取所述表达式对应的字符串写入所述解析结果中执行数据解释,返回数据解释结果;
获取单元,用于根据所述数据解释结果,遍历数据解释后的所述表达式的所述数据类型,获取编辑器的待补全变量类型,所述编辑器配置有集数据源,所述集数据源包括支持所述编辑器补全的变量集数据源和函数集数据源;
补全提示单元,用于根据所述待补全变量类型和预设类型方法,获取所述表达式的代码补全提示信息;
实现单元,用于根据所述补全提示信息实现代码补全。
9.一种电子设备,其特征在于,包括:
存储器,所述存储器用于存储处理程序;
处理器,所述处理器执行所述处理程序时实现如权利要求1至7中任意一项所述的基于Web应用表达式的实现方法。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如权利要求1至7中任意一项所述的基于Web应用表达式的实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210538161.0A CN114895908B (zh) | 2022-05-17 | 2022-05-17 | 基于Web应用表达式的实现方法及系统、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210538161.0A CN114895908B (zh) | 2022-05-17 | 2022-05-17 | 基于Web应用表达式的实现方法及系统、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114895908A true CN114895908A (zh) | 2022-08-12 |
CN114895908B CN114895908B (zh) | 2023-02-28 |
Family
ID=82724220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210538161.0A Active CN114895908B (zh) | 2022-05-17 | 2022-05-17 | 基于Web应用表达式的实现方法及系统、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114895908B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115437683A (zh) * | 2022-11-10 | 2022-12-06 | 平安银行股份有限公司 | 基于sdk的变量配置方法、装置及计算机可读存储介质 |
CN117193739A (zh) * | 2023-11-03 | 2023-12-08 | 建信金融科技有限责任公司 | 一种脚本编辑方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080270981A1 (en) * | 2007-04-30 | 2008-10-30 | Gordon Douglas Hutchison | Determinatioin of a set of candidate code insertions for insertion in program code |
US20140304679A1 (en) * | 2007-04-10 | 2014-10-09 | Adobe Systems Incorporated | Software development tool that provides context-based data schema code hinting |
DE102016222954A1 (de) * | 2016-11-21 | 2018-05-24 | Continental Automotive Gmbh | Verfahren zur Erstellung und/oder Veränderung einer Sammlung von Datensätzen für ein dialoggeführtes technisches Hilfsmittel zur Unterstützung bei der Erstellung und/oder Veränderung von Datenverarbeitungsprogrammen oder Datenbankeinträgen |
CN108388425A (zh) * | 2018-03-20 | 2018-08-10 | 北京大学 | 一种基于lstm自动补全代码的方法 |
CN108595165A (zh) * | 2018-04-25 | 2018-09-28 | 清华大学 | 一种基于代码中间表示的代码补全方法、装置及存储介质 |
CN112817583A (zh) * | 2021-04-19 | 2021-05-18 | 阿里云计算有限公司 | 一种代码编辑方法、装置、服务端、用户设备及存储介质 |
CN113419721A (zh) * | 2021-08-20 | 2021-09-21 | 杭州未名信科科技有限公司 | 基于web的表达式编辑方法、装置、设备和存储介质 |
CN114385164A (zh) * | 2021-12-22 | 2022-04-22 | 五八有限公司 | 页面生成与渲染方法、装置、电子设备及存储介质 |
WO2022089188A1 (zh) * | 2020-11-02 | 2022-05-05 | 华为云计算技术有限公司 | 一种代码处理方法、装置、设备及介质 |
-
2022
- 2022-05-17 CN CN202210538161.0A patent/CN114895908B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140304679A1 (en) * | 2007-04-10 | 2014-10-09 | Adobe Systems Incorporated | Software development tool that provides context-based data schema code hinting |
US20080270981A1 (en) * | 2007-04-30 | 2008-10-30 | Gordon Douglas Hutchison | Determinatioin of a set of candidate code insertions for insertion in program code |
DE102016222954A1 (de) * | 2016-11-21 | 2018-05-24 | Continental Automotive Gmbh | Verfahren zur Erstellung und/oder Veränderung einer Sammlung von Datensätzen für ein dialoggeführtes technisches Hilfsmittel zur Unterstützung bei der Erstellung und/oder Veränderung von Datenverarbeitungsprogrammen oder Datenbankeinträgen |
CN108388425A (zh) * | 2018-03-20 | 2018-08-10 | 北京大学 | 一种基于lstm自动补全代码的方法 |
CN108595165A (zh) * | 2018-04-25 | 2018-09-28 | 清华大学 | 一种基于代码中间表示的代码补全方法、装置及存储介质 |
WO2022089188A1 (zh) * | 2020-11-02 | 2022-05-05 | 华为云计算技术有限公司 | 一种代码处理方法、装置、设备及介质 |
CN112817583A (zh) * | 2021-04-19 | 2021-05-18 | 阿里云计算有限公司 | 一种代码编辑方法、装置、服务端、用户设备及存储介质 |
CN113419721A (zh) * | 2021-08-20 | 2021-09-21 | 杭州未名信科科技有限公司 | 基于web的表达式编辑方法、装置、设备和存储介质 |
CN114385164A (zh) * | 2021-12-22 | 2022-04-22 | 五八有限公司 | 页面生成与渲染方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
殷康麒等: "基于差异性代码克隆的代码块补全提示方法", 《计算机工程》 * |
陆龙龙等: "CodeSearcher:基于自然语言功能描述的代码查询", 《计算机科学》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115437683A (zh) * | 2022-11-10 | 2022-12-06 | 平安银行股份有限公司 | 基于sdk的变量配置方法、装置及计算机可读存储介质 |
CN117193739A (zh) * | 2023-11-03 | 2023-12-08 | 建信金融科技有限责任公司 | 一种脚本编辑方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114895908B (zh) | 2023-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11334692B2 (en) | Extracting a knowledge graph from program source code | |
US10169471B2 (en) | Generating and executing query language statements from natural language | |
CN114895908B (zh) | 基于Web应用表达式的实现方法及系统、设备和存储介质 | |
US9753699B2 (en) | Live browser tooling in an integrated development environment | |
US10594769B2 (en) | Selection mapping between fetched files and source files | |
US10990358B2 (en) | Code completion for overloaded methods | |
US9015685B2 (en) | Code analysis for simulation efficiency improvement | |
US9639333B2 (en) | Method and system for model driven development | |
US10338901B2 (en) | Translation of a visual representation into an executable information extraction program | |
US10447764B2 (en) | Mapping selections between a browser and the original fetched file from a web server | |
US10360004B2 (en) | Using dynamic information to refine control flow graphs | |
CN111190594B (zh) | Vue组件的文档生成方法及装置 | |
US11586839B2 (en) | Code completion of method parameters with machine learning | |
US20210081464A1 (en) | Crawlability of single page applications | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN110020370B (zh) | 在客户端应用中实现动画的方法、装置及动画脚本的框架 | |
CN112860265A (zh) | 一种源代码数据库操作异常检测方法及装置 | |
CN110347416B (zh) | 脚本的更新方法和装置 | |
CN110362317B (zh) | 一种代码转换方法、装置和存储介质 | |
US9996799B2 (en) | Migrating a legacy system by inferring context-sensitive business rules from legacy source code | |
EP3942404B1 (en) | Code completion for overloaded methods | |
US11500844B1 (en) | Synthetic data creation for dynamic program analysis | |
CN117675238A (zh) | 数据访问方法、装置、电子设备及存储介质 | |
CN117785156A (zh) | 一种单文件优化方法、装置、电子设备及存储介质 | |
CN116821159A (zh) | 数据处理方法、装置、设备、介质及产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |