一种页面生成方法、模版引擎及处理器的制造方法

文档序号:6503841阅读:164来源:国知局
一种页面生成方法、模版引擎及处理器的制造方法
【专利摘要】本申请公开了一种页面生成方法、模版引擎及处理器,应用于模版引擎,所述模版引擎设置于服务器上,所述模版引擎响应于浏览器的第一调用指令,或者所述服务器的第二调用指令,读取页面模版数据和轻量级的数据交换JS0N格式的页面模版文件;对所述JS0N格式的页面模版文件进行分析,得到所述页面模版文件对应的模版动态函数;将所述页面模版数据传入所述模版动态函数中,以生成动态页面。通过本申请实施例,实现了在浏览器和服务器两个开发方向上采用同一种页面生成方案完成对动态页面的生成,避免了现有技术中在浏览器和服务器两个方向上采用两种不同的方案进行页面生成时,降低页面生成效率的情况。
【专利说明】一种页面生成方法、模版引擎及处理器

【技术领域】
[0001] 本申请涉及计算机应用【技术领域】,特别涉及一种页面生成方法、模版引擎及处理 器。

【背景技术】
[0002] 目前,生成web页面一般有两种方案,一种是通过后台动态的语言如jsp、php或 asp等模版语言的支持,在服务器端运行模版语言,在服务器端产生动态页面后再返回至浏 览器中;另外一种是采用前端javascript语言通过浏览器的D0M动态添加 html元素,生成 动态页,这种方案由客户端的浏览器执行,其开发效率依赖于客户端的配置。
[0003] 在上述两种页面生成的方案中,针对某一页面,一般只采用一种生成方案,使得由 于模式单一导致页面生成的效率较低。
[0004] 而若针对某一页面同时采用上述两种生成方案,需要对两种生成方案的代码均进 行维护,即是在其中一种生成方案对该页面进行改动开发后,另一种生成方案进行重改时, 还需要重写编写当前开发模式下的开发代码,明显影响了页面生成的效率,同时可能会出 现页面生成效果不统一的情况。
[0005] 因此,亟需一种能够适用于在浏览器及服务器两个方向上生成页面且不会影响页 面生成效率的技术方案。


【发明内容】

[0006] 本申请所要解决的技术问题是提供一种页面生成方法、模版引擎及处理器,用以 解决现有技术中在浏览器及服务器两种方向进行生成页面时,影响开发效率的技术问题。
[0007] 本申请提供了一种页面生成方法,应用于模版引擎,所述模版引擎设置在服务器 上,所述方法包括:
[0008] 响应于浏览器的第一调用指令,或者所述服务器的第二调用指令,读取页面模版 数据和轻量级的数据交换JS0N格式的页面模版文件;
[0009] 对所述JS0N格式的页面模版文件进行分析,得到所述页面模版文件对应的模版 动态函数;
[0010] 将所述页面模版数据传入所述模版动态函数中,以生成动态页面。
[0011] 上述方法,优选的,所述对所述页面模版文件进行分析,得到该页面模版文件对应 的模版动态函数包括:
[0012] 对所述页面模版文件进行编译得到至少一个模版标签;
[0013] 分别对每个所述模版标签进行解析,得到每个所述模版标签对应的javascript 代码片段;
[0014] 将所有所述javascript代码片段进行组合,以获得一个所述页面模版文件对应 的模版动态函数。
[0015] 上述方法,优选的,在所述得到所述页面模版文件对应的模版动态函数之后,所述 方法还包括:
[0016] 将所述模版动态函数置于预设的函数集合中;
[0017] 相应的,在所述读取页面模版数据和JS0N格式的页面模版文件之后,在所述对所 述页面模版文件进行分析之前,所述方法还包括:
[0018] 在所述函数集合中检索与所述页面模版文件相对应的模版动态函数;
[0019] 若检索到模版动态函数,执行所述将所述页面模版数据传入所述模版动态函数 中,以生成动态页面的步骤,否则,执行所述对所述页面模版文件进行分析,得到所述页面 模版文件对应的模版动态函数的步骤。
[0020] 上述方法,优选的,所述对所述页面模版文件进行编译得到至少一个模版标签,包 括:
[0021] 利用正则表达式在所述页面模版文件的模版字符串中分析,得到至少一个与所述 页面模版文件相对应的模版标签。
[0022] 本申请还提供了一种模版引擎,设置在服务器上,所述模版引擎包括:
[0023] 数据读取器,用于响应于浏览器的第一调用指令或所述服务器的第二调用指令, 读取页面模版数据和JS0N格式的页面模版文件;
[0024] 数据分析器,用于对所述JS0N格式的页面模版文件进行分析,得到所述页面模版 文件对应的模版动态函数;
[0025] 页面生成器,用于将所述页面模版数据传入所述模版动态函数中,以生成动态页 面。
[0026] 上述模版引擎,优选的,所述数据分析器包括:
[0027] 编译器,用于对所述页面模版文件进行编译得到至少一个模版标签;
[0028] 至少一个解析器,分别用于对每个所述模版标签进行解析,得到每个所述模版标 签对应的javascript代码片段,触发所述编译器将所有所述javascript代码片段进行组 合,以获得一个所述页面模版文件对应的模版动态函数。
[0029] 上述模版引擎,优选的,还包括:
[0030] 函数缓存器,用于在所述数据分析器得到所述页面模版文件对应的模版动态函数 之后,将所述模版动态函数置于预设的函数集合中;
[0031] 相应的,所述模版引擎还包括:
[0032] 函数查询器,用于在所述数据读取器读取所述服务器中的页面模版文件和页面模 版数据之后,在所述数据分析器对所述页面模版文件进行分析之前,在所述函数集合中检 索与所述页面模版文具相对应的模版动态函数,若检索到模版动态函数,触发所述页面生 成器,将所述页面模版数据传入所述模版动态函数中,以生成动态页面,否则,触发所述数 据分析器,对所述页面模版文件进行分析。
[0033] 上述模版引擎,优选的,所述编译器具体用于:
[0034] 利用正则表达式在所述页面模版文件的模版字符串中分析,得到至少一个与所述 页面模版文件相对应的模版标签。
[0035] 本申请还提供了一种处理器,包括上述任意一项所述的模版引擎。
[0036] 由上述方案可知,本申请提供的一种页面生成方法、模版引擎及处理器,所述方法 应用于所述模版引擎,所述模版引擎设置服务器上,所述模版引擎响应于浏览器的第一调 用指令或所述服务器的第二调用指令读取到页面模版数据和JSON格式的页面模版文件, 在通过对JS0N格式的页面模版文件进行分析,得到模版动态函数之后,将页面模版数据置 入到模版动态函数中,从而生成动态页面,实现在浏览器和服务器两个开发方向上采用同 一种页面生成方案完成对动态页面的生成,避免了现有技术中在浏览器和服务器两个方向 上采用两种不同的方案进行页面生成时,降低页面生成效率的情况。

【专利附图】

【附图说明】
[0037] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其 他的附图。
[0038] 图1为本申请提供的一种页面生成方法实施例一的流程图;
[0039] 图2为本申请提供的一种页面生成方法实施例二的部分流程图;
[0040] 图3为本申请提供的一种页面生成方法实施例三的流程图;
[0041] 图4为本申请实施例二的另一流程图;
[0042] 图5为本申请提供的一种模版引擎实施例四的结构示意图;
[0043] 图6为本申请提供的一种模版引擎实施例五的部分结构示意图;
[0044] 图7为本申请提供的一种模版引擎实施例六的结构示意图;
[0045] 图8为本申请实施例六的另一结构示意图;
[0046] 图9为本申请提供的一种处理器实施例七的结构示意图;
[0047] 图10为本申请实施例七中实现页面生成的时序图;
[0048] 图11为本申请实施例七中所述模版引擎中的组件示例图;
[0049] 图12为本申请实施例七中的应用示例逻辑架构图。

【具体实施方式】
[0050] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于 本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本申请保护的范围。
[0051] 参考图1,其示出了本申请提供的一种页面生成方法实施例一的流程图,所述方法 应用于模版引擎,所述模版引擎设置于服务器上,即本申请实施例适用于浏览器和服务器 两种方式进行同一页面的开发。在本申请实施例中,所述模版引擎响应于所述浏览器的第 一调用指令,其中,所述第一调用指令可以为所述浏览器的script脚本标签调用指令,即 为:所述浏览器可以通过script脚本标签调用所述模版引擎,从而启动所述模版引擎。在 所述模版引擎响应于所述浏览器的script标签调用指令之后,所述方法可以包括以下步 骤:
[0052] 步骤101 :读取页面模版数据和轻量级的数据交换JS0N格式的页面模版文件。
[0053] 其中,在所述模版引擎响应于所述浏览器的script标签调用指令之后或之前,在 所述模版引擎实施所述步骤101之前,所述浏览器可以预先通过XMLHttpRequest加载存储 于所述服务器上存储的页面模版文件,并通过调用业务逻辑来读取所述服务器上存储的页 面模版数据,之后,再由所述模版引擎执行所述步骤101,读取所述页面模版数据和所述页 面模版文件。而所述页面模版文件可以由javascript实现。
[0054] 步骤102 :对所述JS0N格式的页面模版文件进行分析,得到所述页面模版文件相 对应的模版动态函数。
[0055] 其中,所述步骤102可以通过所述模版引擎中的javascript编译分析器实现,将 所述页面模版文件编译成对应的动态执行函数,即模版动态函数。
[0056] 步骤103 :将所述页面模版数据传入所述模版动态函数中,以生成动态页面。
[0057] 其中,所述页面模版数据包括待开发的动态页面中所需要添加的数据参数。
[0058] 需要说明的是,所述页面模版数据预先置于所述服务器的数据存储装置如数据库 中,当所述模版引擎响应于所述浏览器的script标签调用指令时,在所述模版引擎执行所 述步骤101读取所述页面模版数据之前,所述浏览器首先通过业务逻辑接口获取得到所述 页面模版数据,再由所述模版引擎执行所述步骤101读取所述页面模版数据。
[0059] 需要说明的是,当所述模版引擎响应于所述浏览器的script标签调用指令时,在 所述步骤103生成所述动态页面之后,所述方法还包括:
[0060] 将所述动态页面通过修改DOM innerHTML显示于所述浏览器中。
[0061] 由上述方案可知,本申请提供的一种页面生成方法实施例一,本申请实施例一应 用于所述模版引擎,所述模版引擎设置在服务器上,所述模版引擎响应于浏览器的第一调 用指令读取到页面模版数据和JS0N格式的页面模版文件,在通过对JS0N格式的页面模版 文件进行分析,得到模版动态函数之后,将页面模版数据置入到模版动态函数中,从而生成 动态页面,实现在浏览器的开发方向上采用一种页面生成方案完成对动态页面的生成。 [0062] 需要说明的是,本申请实施例一中的模版引擎除了能够响应于所述浏览器的第一 调用指令之外,也可以响应所述服务器的第二调用指令,其中,所述第二调用指令可以为所 述服务器的直接调用指令,即为:所述服务器可以直接调用设置于其自身数据存储装置上 的模版引擎,从而启动所述模版引擎。在所述模版引擎响应于所述服务器的直接调用指令 之后,所述模版引擎被启动执行所述步骤101至所述步骤103,完成在所述服务器端生成动 态页面。
[0063] 其中,所述模版引擎运行所需的页面模版数据和页面模版文件存储于所述服务器 上的数据存储装置上。在所述模版引擎响应于所述服务器的直接调用指令之后或之前,在 所述模版引擎被所述服务器启动实施所述步骤101之前,所述服务器可以预先通过I/O设 备获取所述页面模版文件,并通过调用业务逻辑接口来获取页面模版数据,之后,再由所述 模版引擎执行所述步骤101,读取所述页面模版文件和所述页面模版数据。而所述业务逻辑 接口可以通过查询数据库中的内容进行数据获取。
[0064] 需要说明的是,当所述模版引擎响应于所述服务器的直接调用指令时,在所述步 骤103生成所述动态页面之后,所述方法还包括:
[0065] 将所述动态页面发送至所述浏览器中,触发所述浏览器显示所述动态页面。
[0066] 由此可知,本申请实施例一中的模版引擎除了能够响应于浏览器的第一调用指令 在所述浏览器端实现对动态页面生成之外,也可以响应于服务器的第二调用指令,由所述 模版引擎读取到页面模版数据和JS0N格式的页面模版文件,所述模版引擎在通过对JS0N 格式的页面模版文件进行分析,得到模版动态函数之后,将页面模版数据置入到模版动态 函数中,从而生成动态页面。由此,本申请实施例一实现了在浏览器和服务器两个开发方向 上采用同一种页面生成方案完成对同一动态页面的生成,避免了现有技术中在浏览器和服 务器两个方向上采用两种不同的方案进行页面生成时,降低页面生成效率的情况。
[0067] 参考图2,为本申请提供的一种页面生成方法实施例二的部分流程图,所述步骤 102可以通过以下各步骤实现:
[0068] 步骤201 :对所述页面模版文件进行编译得到至少一个模版标签。
[0069] 其中,所述步骤201可以通过以下方式具体实现:
[0070] 利用正则表达式在所述页面模版文件的模版字符串中分析,得到至少一个与所述 页面模版文件相对应的模版标签。
[0071] 需要说明的是,每个所述模版标签具有其不同的性质类型,包括如表达式、文本、 关键字、嵌入代码和内部函数等模版标签。
[0072] 步骤202 :分别对每个所述模版标签进行解析,得到每个所述模版标签对应的 javascript代码片段。
[0073] 其中,上述步骤202可以通过以下方式实现:
[0074] 根据预先设置的模版定义规则,分别对每个所述模版标签进行解析,得到每个所 述模版标签各自对应的javascript代码片段。
[0075] 步骤203 :将所有所述javascript代码片段进行组合,获得一个所述页面模版文 件对应的模版动态函数。
[0076] 其中,所述页面模版文件由JS0N数据组成,JS0N数据是一种纯文本的数据格式, 该数据格式的模版字符串被直接转换成javascript代码片段,在实现动态页面生成时,明 显提高本申请对动态页面的开发效率。
[0077] 参考图3,其示出了本申请提供的一种页面生成方法实施例三的流程图,其中,在 所述步骤102之后,所述方法还可以包括以下步骤:
[0078] 步骤S104 :将所述模版动态函数置于预设的函数集合中。
[0079] 此时,参考图4,为本申请实施例二的另一流程图,在所述步骤101之后,在所述步 骤102之前,所述方法还可以包括:
[0080] 步骤S105 :在所述函数集合中检索与所述页面模版文件相对应的模版动态函数。
[0081] 步骤S106 :判断是否检索到模版动态函数,如果是,执行所述步骤103,将所述页 面模版数据传入所述模版动态函数中,以生成动态页面,其中,此时的模版动态函数为检索 到的模版动态函数,否则,执行所述步骤102,对所述页面模版文件进行分析,得到所述页面 模版文件对应的模版动态函数。
[0082] 在上述方案中,在第一次对页面模版文件分析之后,将得到的模版动态函数进行 缓存,在后续进行再一次的页面生成任务时,在获取到页面模版文件之后,可以首先在缓存 的函数集合中检索是否已经有现成的模版动态函数与当前的页面模版文件相对应,若检索 到合适的模版动态函数,则无需再一次进行页面模版文件的分析工作,节省系统运行时间, 提高了页面开发的工作效率。
[0083] 参考图5,其示出了本申请提供的一种模版引擎实施例四的结构示意图,所述模 版引擎设置在服务器上,即本申请实施例同时适用于浏览器和服务器两种方式进行同一页 面的开发。在本申请实施例中,所述模版引擎响应于所述浏览器的第一调用指令,其中,所 述第一调用指令可以为所述浏览器的script标签调用指令,即为:所述浏览器可以通过 script脚本标签调用所述模版引擎至所述浏览器,从而启动所述模版引擎。所述模版引擎 还可以称为javascript模版引擎,所述模版引擎可以包括:
[0084] 数据读取器501,用于读取页面模版数据和JS0N格式的页面模版文件。
[0085] 其中,在当所述模版引擎响应于所述浏览器的script标签调用指令之后或之前, 在所述数据读取器501被触发执行之前,所述浏览器可以预先通过XMLHttpRequest预先加 载存储于所述服务器上存储的页面模版文件,并预先通过调用业务逻辑获取所述服务器上 存储的页面模版数据,之后,再由所述模版引擎中的数据读取器501读取所述页面模版数 据和所述页面模版文件。而所述页面模版文件由javascript实现。
[0086] 数据分析器502,用于对所述JS0N格式的页面模版文件进行分析,得到所述页面 模版文件对应的模版动态函数。
[0087] 其中,所述数据分析器502与所述数据读取器501相连接。所述数据分析器502 可以通过javascript编译分析器实现,将所述页面模版文件编译成对应的动态执行函数, 即模版动态函数。
[0088] 页面生成器503,用于将所述页面模版数据传入所述模版动态函数中,以生成动态 页面。
[0089] 需要说明的是,所述页面生成器503与所述数据分析器502相连接。
[0090] 其中,所述页面模版数据包括待开发的动态页面中所需要添加的数据参数。
[0091] 需要说明的是,所述页面模版数据预先置于所述服务器的数据存储装置如数据库 中,当所述模版引擎响应于所述浏览器的script标签调用指令时,在所述数据获取器501 读取所述页面模版数据之前,所述浏览器首先通过业务逻辑接口获取得到所述页面模版数 据,再由所述模版引擎中的数据读取器501读取所述页面模版数据。
[0092] 需要说明的是,当所述模版引擎响应于所述浏览器的script标签调用指令时,所 述页面生成器503还用于将生成的动态页面显示于所述浏览器上。
[0093] 由上述方案可知,本申请提供的一种模版引擎实施例四,本申请实施例四应用于 所述模版引擎,所述模版引擎设置在服务器上,所述模版引擎响应于浏览器的第一调用指 令读取到页面模版数据和JS0N格式的页面模版文件,在通过对JS0N格式的页面模版文件 进行分析,得到模版动态函数之后,将页面模版数据置入到模版动态函数中,从而生成动态 页面,实现在浏览器的开发方向上采用一种页面生成方案完成对动态页面的生成。
[0094] 需要说明的是,本申请实施例四的模版引擎除了能够响应于所述浏览器的第一调 用指令之外,也可以响应所述服务器的第二调用指令,其中,所述第二调用指令可以为所述 服务器的直接调用指令,即为:所述服务器可以直接调用设置于其自身数据存储装置上的 模版引擎,从而启动所述模版引擎。在所述模版引擎响应于所述服务器的直接调用指令之 后,所述模版引擎中的单元模块如数据读取器501、数据分析器502和页面生成器503依次 被触发运行,完成在所述服务器端生成动态页面。
[0095] 其中,所述模版引擎运行所需的页面模版数据和页面模版文件存储于所述服务器 上的数据存储装置上。在所述模版引擎响应于所述服务器的直接调用指令之后或之前,在 所述模版引擎中的数据读取器501被触发运行之前,所述服务器可以预先通过I/O设备获 取所述页面模版文件,并通过调用业务逻辑接口来获取页面模版数据,之后,再由所述模版 引擎中的数据读取器501读取所述页面模版文件和所述页面模版数据。
[0096] 需要说明的是,当所述模版引擎响应于所述服务器的直接调用指令时,所述页面 生成器503还用于将生成的动态页面发送至所述浏览器中,触发所述浏览器显示所述动态 页面。
[0097] 由此可知,本申请实施例四的模版引擎除了能够响应于浏览器的第一调用指令在 所述浏览器端实现对动态页面生成之外,也可以响应于服务器的第二调用指令,由所述模 版引擎读取到页面模版数据和JS0N格式的页面模版文件,所述模版引擎在通过对JS0N格 式的页面模版文件进行分析,得到模版动态函数之后,将页面模版数据置入到模版动态函 数中,从而生成动态页面。由此,本申请实施例四实现了在浏览器和服务器两个开发方向上 采用同一种页面生成方案完成对同一动态页面的生成,避免了现有技术中在浏览器和服务 器两个方向上采用两种不同的方案进行页面生成时,降低页面生成效率的情况。
[0098] 参考图6,为本申请提供的一种模版引擎实施例五的部分结构示意图,其中,所述 数据分析器502可以包括:
[0099] 编译器521,用于对所述页面模版文件进行编译得到至少一个模版标签。
[0100] 其中,所述编译器521可以通过以下方式实现其功能:
[0101] 利用正则表达式在所述页面模版文件的模版字符串中分析,得到至少一个与所述 页面模版文件相对应的模版标签。
[0102] 需要说明的是,每个所述模版标签具有其不同的性质类型,包括如表达式、文本、 关键字、嵌入代码和内部函数等模版标签。
[0103] 至少一个解析器522,分别用于对每个所述模版标签进行解析,得到每个所述模版 标签对应的javascript代码片段,触发所述编译器521将所有所述javascript代码片段 进行组合,获得一个所述页面模版文件对应的模版动态函数。
[0104] 需要说明的是,每个所述解析器522分别与所述编译器521相连接。
[0105] 其中,每个所述解析器522对其对应的模版标签进行解析,得到对应的 javascript代码片段时,可以通过以下方式实现:
[0106] 根据预先设置的模版定义规则,对该解析器522对应的所述模版标签进行解析, 得到该模版标签各自对应的javascript代码片段。
[0107] 需要说明的是,所述页面模版文件由JS0N数据组成,JS0N数据是一种纯文本的数 据格式,该数据格式的模版字符串被直接转换成javascript代码片段,在实现动态页面生 成时,明显提高本申请对动态页面的开发效率。
[0108] 参考图7,为本申请提供的一种模版引擎实施例六的结构示意图,其中,所述模版 引擎还可以包括:
[0109] 函数缓存器504,用于在所述数据分析器502得到所述页面模版文件对应的模版 动态函数之后,将所述模版动态函数置于预设的函数集合中。
[0110] 其中,所述函数缓存器504与所述数据分析器502相连接。
[0111] 此时,参考图8,为本申请实施例六的另一结构示意图,所述模版引擎还包括:
[0112] 函数查询器505,用于在所述数据读取器501读取所述服务器中的页面模版文件 和页面模版数据之后,在所述数据分析器502对所述页面模版文件进行分析之前,在所述 函数集合中检索与所述页面模版文具相对应的模版动态函数,若检索到模版动态函数,触 发所述页面生成器503,将所述页面模版数据传入所述模版动态函数中,以生成动态页面, 否则,触发所述数据分析器502,对所述页面模版文件进行分析。
[0113] 在上述方案中,在第一次对页面模版文件分析之后,将得到的模版动态函数进行 缓存,在后续进行再一次的页面生成任务时,在获取到页面模版文件之后,可以首先在缓存 的函数集合中检索是否已经有现成的模版动态函数与当前的页面模版文件相对应,若检索 到合适的模版动态函数,则无需再一次进行页面模版文件的分析工作,节省系统运行时间, 提高了页面开发的工作效率。
[0114] 参考图9,为本申请提供的一种处理器实施例七的结构示意图,所述处理器901可 以包括上述实施例中任意一项所述的模版引擎902。
[0115] 所述模版引擎902设置在服务器上,其中,在所述模版引擎502响应所述浏览器的 第一调用指令时,即所述浏览器通过script脚本标签调用所述模版引擎902,从而启动所 述模版引擎902,并在所述模版引擎902运行之前,所述浏览器预先通过XMLHttpRequest 预先加载存储于所述服务器上的页面模版文件,并预先通过调用业务逻辑获取页面模版数 据,再触发所述模版引擎902运行。
[0116] 而在所述模版引擎响应所述服务器的第二调用指令时,即所述服务器直接调用所 述模版引擎启动,并在所述模版引擎902运行之前,所述服务器预先通过I/O设备读取所述 页面模版文件,并预先通过调用业务逻辑获取页面模版数据,再触发所述模版引擎902运 行。
[0117] 其中,所述模版引擎902,用于读取页面模版数据和轻量级的数据交换JS0N格式 的页面模版文件;对所述JS0N格式的页面模版文件进行分析,得到所述页面模版文件对应 的模版动态函数;将所述页面模版数据传入所述模版动态函数中,以生成动态页面。
[0118] 需要说明的是,在所述模版引擎902响应于所述浏览器的script标签调用指令 时,所述模版引擎902在完成动态页面生成之后,可以通过修改DOM innerHTML将动态页面 显示于所述浏览器中。
[0119] 而在所述模版引擎902响应于所述服务器的直接调用指令时,所述模版引擎902 在完成动态页面生成之后,可以将所述动态页面发送至所述浏览器中,触发所述浏览器显 示所述动态页面。
[0120] 参考图10,为本申请实施例七中实现页面生成的时序图,其中,所述实现方包括浏 览器或服务器,以下对所述时序图中各步骤进行说明:
[0121] 1、触发模版引擎启动,将所述浏览器或服务器预先获取到的页面模版文件和页面 模版数据传入所述模版引擎,由所述模版引擎对所述页面模版文件和所述页面模版数据进 行读取;
[0122] 2、所述模板引擎判断缓存模版动态函数的函数集合中是否存在对应的模板动态 函数,如果没有,则调用编译器;
[0123] 3、所述编译器通过采用正则表达式从页面模版文件的模版字符串中分析出页面 模版文件中对应的模版标签,然后调用每个模版标签对应的解析器;
[0124] 4、每个所述解析器根据模板定义生成一段javascript代码片段;
[0125] 5、所述解析器将所述javascript代码片段返回给所述编译器;
[0126] 6、把全部的javascript代码片段进行组合,得到一个模版动态函数;
[0127] 7、返回模版动态函数给所述模板引擎;
[0128] 8、所述模板引擎把模板动态函数放入所述所述函数集合中,以备后续调用以提高 页面生成效率;
[0129] 9、传入页面模版数据至所述模版动态函数,得到动态页面;
[0130] 10、将得到的动态页面返回给实现方。
[0131] 参考图11,为本申请实施例七中所述模版引擎中的组件示例图,其中,所述模版引 擎除了包括数据读取组件之外,还包括如图11中所示的编译器、缓存器和多个解析器。
[0132] 其中,所述处理器901为运行所述模版引擎902的载体,包括计算机、中央处理器 CPU芯片或其他硬件处理器,所述模版引擎902占用所述处理器901的PCB板上的一块电 路,从而实现所述模版引擎902的功能。
[0133] 另外,参考图12,为本申请实施例七中所述浏览器、所述服务器与所述模版引擎 902之间的逻辑架构图,所述模版引擎902、所述页面模版文件和所述页面模版数据均存储 于所述服务器中。
[0134] 当所述模版引擎902响应于所述浏览器的script标签调用指令时,所述模版引擎 902被启动,由所述模版引擎902读取预先由所述浏览器获取到的页面模版数据和页面模 版文件,进而进行数据分析,得到动态页面。其中,所述浏览器通过XMLHttpRequest预先加 载存储于所述服务器上的页面模版文件,并通过调用业务逻辑获取页面模版数据。
[0135] 当所述模版引擎902响应于所述服务器的直接调用指令时,所述模版引擎902被 启动,由所述模版引擎902读取预先由所述服务器获取到的页面模版数据和页面模版文 件,进而进行数据分析,得到动态页面。其中,所述服务器通过I/O设备读取所述页面模版 文件,并通过调用业务逻辑获取页面模版数据。
[0136] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重 点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0137] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将 一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作 之间存在任何这种实际的关系或者顺序。而且,术语"包括"、"包含"或者其任何其他变体 意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括 那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或 者设备所固有的要素。在没有更多限制的情况下,由语句"包括一个……"限定的要素,并 不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0138] 以上对本发明所提供的一种页面生成方法、模版引擎及处理器进行了详细介绍, 本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用 于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的 思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为 对本申请的限制。
【权利要求】
1. 一种页面生成方法,其特征在于,应用于模版引擎,所述模版引擎设置于服务器上, 所述方法包括: 响应于浏览器的第一调用指令,或者所述服务器的第二调用指令,读取页面模版数据 和轻量级的数据交换JSON格式的页面模版文件; 对所述JSON格式的页面模版文件进行分析,得到所述页面模版文件对应的模版动态 函数; 将所述页面模版数据传入所述模版动态函数中,以生成动态页面。
2. 根据权利要求1所述的方法,其特征在于,所述对所述页面模版文件进行分析,得到 该页面模版文件对应的模版动态函数包括: 对所述页面模版文件进行编译得到至少一个模版标签; 分别对每个所述模版标签进行解析,得到每个所述模版标签对应的javascript代码 片段; 将所有所述javascript代码片段进行组合,以获得一个所述页面模版文件对应的模 版动态函数。
3. 根据权利要求1所述的方法,其特征在于,在所述得到所述页面模版文件对应的模 版动态函数之后,所述方法还包括: 将所述模版动态函数置于预设的函数集合中; 相应的,在所述读取页面模版数据和JSON格式的页面模版文件之后,在所述对所述页 面模版文件进行分析之前,所述方法还包括: 在所述函数集合中检索与所述页面模版文件相对应的模版动态函数; 若检索到模版动态函数,执行所述将所述页面模版数据传入所述模版动态函数中,以 生成动态页面的步骤,否则,执行所述对所述页面模版文件进行分析,得到所述页面模版文 件对应的模版动态函数的步骤。
4. 根据权利要求2所述的方法,其特征在于,所述对所述页面模版文件进行编译得到 至少一个模版标签,包括: 利用正则表达式在所述页面模版文件的模版字符串中分析,得到至少一个与所述页面 模版文件相对应的模版标签。
5. -种模版引擎,其特征在于,设置在服务器上,所述模版引擎包括: 数据读取器,用于响应于浏览器的第一调用指令或所述服务器的第二调用指令,读取 页面模版数据和JSON格式的页面模版文件; 数据分析器,用于对所述JSON格式的页面模版文件进行分析,得到所述页面模版文件 对应的模版动态函数; 页面生成器,用于将所述页面模版数据传入所述模版动态函数中,以生成动态页面。
6. 根据权利要求5所述的模版引擎,其特征在于,所述数据分析器包括: 编译器,用于对所述页面模版文件进行编译得到至少一个模版标签; 至少一个解析器,分别用于对每个所述模版标签进行解析,得到每个所述模版标签对 应的javascript代码片段,触发所述编译器将所有所述javascript代码片段进行组合,以 获得一个所述页面模版文件对应的模版动态函数。
7. 根据权利要求5所述的模版引擎,其特征在于,还包括: 函数缓存器,用于在所述数据分析器得到所述页面模版文件对应的模版动态函数之 后,将所述模版动态函数置于预设的函数集合中; 相应的,所述模版引擎还包括: 函数查询器,用于在所述数据读取器读取所述服务器中的页面模版文件和页面模版数 据之后,在所述数据分析器对所述页面模版文件进行分析之前,在所述函数集合中检索与 所述页面模版文具相对应的模版动态函数,若检索到模版动态函数,触发所述页面生成器, 将所述页面模版数据传入所述模版动态函数中,以生成动态页面,否则,触发所述数据分析 器,对所述页面模版文件进行分析。
8. 根据权利要求6所述的模版引擎,其特征在于,所述编译器具体用于: 利用正则表达式在所述页面模版文件的模版字符串中分析,得到至少一个与所述页面 模版文件相对应的模版标签。
9. 一种处理器,其特征在于,包括上述权利要求5至8中任意一项所述的模版引擎。
【文档编号】G06F17/30GK104216926SQ201310222086
【公开日】2014年12月17日 申请日期:2013年6月5日 优先权日:2013年6月5日
【发明者】郭铁志, 张宝玉, 马向晖 申请人:上海缪思信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1