[发明专利]一种模板渲染的方法、装置及浏览器有效
| 申请号: | 201610671634.9 | 申请日: | 2016-08-15 |
| 公开(公告)号: | CN107766344B | 公开(公告)日: | 2021-07-30 |
| 发明(设计)人: | 刘威;尹利民;陈旭东;王建 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
| 主分类号: | G06F16/958 | 分类号: | G06F16/958;G06F8/30 |
| 代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 林祥 |
| 地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 模板 渲染 方法 装置 浏览器 | ||
1.一种模板渲染的方法,其特征在于,包括:
获取用户的网页浏览请求;
确定所述网页浏览请求对应的模板;
基于所述模板调用业务服务返回的数据进行模板渲染,生成对应的网页页面,其中,所述数据包括:模板渲染过程中从服务工厂中获取的业务服务的数据;所述基于所述模板调用业务服务返回的数据进行模板渲染,生成对应的网页页面,包括:读取所述模板,并将读取的所述模板解析为抽象语法树;遍历抽象语法树中的每个节点;每遍历到一个节点时,利用所述节点的变量名在模板渲染上下文对象中查找对应的变量值;如果查找到对应的变量值,则利用所述变量值去渲染所述节点;如果没有查找到对应的变量值,则利用所述变量名从服务工厂中查找对应的业务服务;如果查找到对应的业务服务,则执行所述业务服务,并把执行所述业务服务的数据作为变量值来渲染所述节点;渲染所述抽象语法树中的每个节点后,生成网页页面;
向所述用户返回所述网页页面。
2.根据权利要求1所述的方法,其特征在于,所述抽象语法树中包括变量节点,所述变量节点用来表示所述节点在渲染过程中会被替换为对应的变量值。
3.根据权利要求1至2任一项所述的方法,其特征在于,还包括:
在模板渲染前,利用依赖注入容器收集所有的业务服务;
建立所述业务服务与服务名之间的对应关系,以便于根据所述服务名查找到对应的业务服务。
4.根据权利要求3所述的方法,其特征在于,所述利用依赖注入容器收集所有的业务服务,包括:
在依赖注入容器初始化后,遍历依赖注入容器中所有服务对象的方法;
判断所述方法上是否有特定的注解标识的注解,如果有,则确定所述方法就是一个服务方法,并将注解的值作为服务工厂中的键;
将所述服务方法包装为一个服务结果代理对象,将所述服务结果代理对象作为值保存到服务工厂中,以便于模板渲染时根据服务工厂中的键来查找服务结果代理对象。
5.一种模板渲染装置,其特征在于,包括:
获取单元,用于获取用户的网页浏览请求;
第一确定单元,用于确定所述网页浏览请求对应的模板;
第一渲染单元,用于基于所述模板调用业务服务返回的数据进行模板渲染,其中,所述数据包括:模板渲染过程中直接从服务工厂中获取的业务服务的数据;所述第一渲染单元包括:读取单元,用于读取所述模板;解析单元,用于将读取的所述模板解析为抽象语法树;第一遍历单元,用于遍历抽象语法树中的每个节点;第一判断单元,用于在所述第一遍历单元每遍历到一个节点时,判断利用所述节点的变量名在模板渲染上下文对象中是否查找对应的变量值;第二渲染单元,用于在所述第一判断单元判定在所述模板渲染上下文对象中查找到对应的变量值时,利用所述变量值去渲染所述节点;第二判断单元,用于在所述第一判断单元判定在所述模板渲染上下文对象中没有查找到对应的变量值时,判断利用所述变量名是否从服务工厂中查找到对应的业务服务;执行单元,用于在所述第二判断单元判定查找到对应的业务服务时,执行所述业务服务;第三渲染单元,用于将所述执行单元执行所述业务服务的数据作为变量值来渲染所述节点;
生成单元,用于根据所述第一渲染单元的渲染结果生成对应的网页页面;
发送单元,用于向所述用户返回所述网页页面。
6.根据权利要求5所述的装置,其特征在于,还包括:
收集单元,用于在模板渲染前,利用依赖注入容器收集所有的业务服务;
建立单元,用于建立所述业务服务与服务名之间的对应关系,以便于根据所述服务名查找到对应的业务服务。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610671634.9/1.html,转载请声明来源钻瓜专利网。





