本发明涉及jit即时编译技术,尤其涉及一种jit即时编译web表单元数据的实现方法。
背景技术:
jit(just-in-timecompiler)即时编译在java和c#中都有使用,即使编译器可以将java的字节码或是c#的中间语言转换成可以直接发送给处理器的指令程序。
前端中angular也提供了jit技术,将angular源码即时编译成es5标准的js代码,直接在浏览器中运行。
本发明将jit的概念应用到了web表单的开发当中,表单设计器通过用户拖拽的交互方式完成程序功能设计(即web表单)。设计完成后将web表单的界面布局、样式、交互方式以及交互逻辑保存成json格式描述文件(即web表单元数据)。如何能够让web表单元数据在运行环境中真正运转起来,就需要将json格式的元数据转换成真正可执行的源代码。这时就需要jit来完成该项工作。
技术实现要素:
为了解决以上技术问题,本发明提出了一种jit即时编译web表单元数据的实现方法
本发明主要功能是接收web表单的json元数据,使用pug模版引擎生成运行时可执行的源代码。支持使用各种ui控件库,生成可交互的web表单界面。
主要包括几个步骤:
1)通过命令行接收并解析即时编译的相关配置参数。
配置参数包含:
·web表单json元数据的文件目录
·代码生成目录
·界面所使用的ui控件库
2)使用参数创建jit服务上下文,将服务上下文作为参数传递给jit即时编译服务并执行服务。
3)使用pug模版引擎解析web表单json元数据生成运行时angular源代码。
4)将源代码输出到指定的文件目录。
在nodejs环境下的命令行中,接收即时编译的配置参数,并对参数进行解析。
使用解析后的命令行参数创建服务上下文,通过ioc容器获取jit引擎工厂实例,创建jit引擎,调用引擎的createtask方法创建任务,将服务上下文传递给任务并执行任务。
解析服务上下文,创建生成器队列,执行生成器队列,使用pug模版引擎生成运行时的源代码。
根据服务上下文中的源码发布路径,将生成的源代码文件并输出到指定文件目录。
附图说明
图1是本发明的原理示意图。
具体实施方式
下面对本发明的内容进行更加详细的阐述:
本发明的一种jit即时编译web表单元数据的实现方法,主要包含以下内容:
1、通过nodejs命令行调用jit服务时,接收编译参数并进行参数解析;
2、使用解析后的命令行参数创建服务上下文,并启动jit服务;
3、执行服务过程中组织生成器队列,按顺序执行生成器队列,使用pug模版引擎生成源代码;
4、将编译生成后的源代码输出到指定的文件目录。
第一步,nodejs命令行输入指令调用jit服务,并传入配置参数。
jit--metadatapath=’e:/metadata’--publishpath=’e:/publish’--uilibrary=’kendoui’
第二步,解析指令以及配置参数,调用jit服务。
第三步,通过工厂创建引擎实例,使用引擎实例创建任务,构建服务上下文,将服务上下文作为参数传递给任务并运行任务。
第四步,组织生成器队列,并执行队列,使用pug模版引擎生成源代码并输出到指定文件目录。
下面是组织生成器队列,并执行队列的源码。
下面是生成器源码:使用pug模版引擎生成源代码并输出到指定文件目录。