CN107643889A - 基于模板引擎的页面渲染方法和装置 - Google Patents

基于模板引擎的页面渲染方法和装置 Download PDF

Info

Publication number
CN107643889A
CN107643889A CN201610579123.4A CN201610579123A CN107643889A CN 107643889 A CN107643889 A CN 107643889A CN 201610579123 A CN201610579123 A CN 201610579123A CN 107643889 A CN107643889 A CN 107643889A
Authority
CN
China
Prior art keywords
template
worker thread
thread
character string
transfer parameters
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
Application number
CN201610579123.4A
Other languages
English (en)
Other versions
CN107643889B (zh
Inventor
向洋君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201610579123.4A priority Critical patent/CN107643889B/zh
Publication of CN107643889A publication Critical patent/CN107643889A/zh
Application granted granted Critical
Publication of CN107643889B publication Critical patent/CN107643889B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种基于模板引擎的页面渲染方法和装置。上述方法包括以下步骤:通过工作线程监听模板引擎的主线程发送的消息;通过所述工作线程接收所述消息,并解析所述消息得到传递参数;使所述工作线程根据所述传递参数生成HTML字符串;通过所述工作线程将所述HTML字符串发送给所述模板引擎的主线程,使所述模板引擎的主线程根据所述HTML字符串显示页面。上述基于模板引擎的页面渲染方法和装置,能够加速页面的渲染,提高页面的渲染性能,避免页面出现卡顿的情况。

Description

基于模板引擎的页面渲染方法和装置
技术领域
本发明涉及互联网技术领域,特别是涉及一种基于模板引擎的页面渲染方法和装置。
背景技术
随着互联网技术的发展,前端应用变得越来越复杂,模板引擎作为数据与界面分离工作中最重要一环,受到越来越多的前端开发者的青睐。渲染指的是从模型生成图像的过程,模板引擎可将模板文件及数据生成HTML(HyperText Markup Language,超文本标记语言)文档,以此实现网页页面的渲染。在传统的方式中,模板引擎通过模板语法编译模板文件,并利用数据生成最终的HTML文档,此过程是串行执行的,当需要生成复杂结构的HTML文档时,需要耗费较长的时间进行编译,在此过程中页面无法对用户的操作进行响应,出现线程阻塞,使得页面展示的效率变低且会出现页面卡顿的情况。
发明内容
基于此,有必要提供一种基于模板引擎的页面渲染方法,能够加速页面的渲染,提高页面的渲染性能,避免页面出现卡顿的情况。
此外,还有必要提供一种基于模板引擎的页面渲染装置,能够加速页面的渲染,提高页面的渲染性能,避免页面出现卡顿的情况。
一种基于模板引擎的页面渲染方法,包括以下步骤:
通过工作线程监听模板引擎的主线程发送的消息;
通过所述工作线程接收所述消息,并解析所述消息得到传递参数;
使所述工作线程根据所述传递参数生成HTML字符串;
通过所述工作线程将所述HTML字符串发送给所述模板引擎的主线程,使所述模板引擎的主线程根据所述HTML字符串显示页面。
在其中一个实施例中,在所述通过工作线程监听模板引擎的主线程发送的消息的步骤之前,还包括:
调用预先定义的线程函数创建工作线程;
定义所述工作线程的数据结构;
使所述模板引擎的主线程调用所述数据结构向所述工作线程发送消息。
在其中一个实施例中,所述传递参数包括模板字符串及数据;
所述使所述工作线程根据所述传递参数生成HTML字符串,包括:
通过所述工作线程将所述模板字符串转化为模板函数;
使所述工作线程根据所述模板函数处理所述数据,生成HTML字符串。
在其中一个实施例中,在所述通过所述工作线程接收所述消息,并解析所述消息得到传递参数的步骤之后,还包括:
通过所述工作线程获取所述传递参数的类型;
当所述传递参数为模板字符串时,通过所述工作线程将所述模板字符串转化为模板函数,并将所述模板函数发送给所述模板引擎的主线程;
所述使所述工作线程根据所述传递参数生成HTML字符串,包括:
当所述传递参数为模板函数及数据时,使所述工作线程根据所述模板函数处理所述数据,生成HTML字符串。
在其中一个实施例中,所述通过所述工作线程将所述模板字符串转化为模板函数,包括:
通过所述工作线程解析所述模板字符串,并获取所述模板字符串中的模板标识符;
将所述模板字符串转化为目标源码,并根据所述目标源码构建模板函数。
一种基于模板引擎的页面渲染装置,包括:
监听模块,用于通过工作线程监听模板引擎的主线程发送的消息;
接收模块,用于通过所述工作线程接收所述消息,并解析所述消息得到传递参数;
生成模块,用于使所述工作线程根据所述传递参数生成HTML字符串;
发送模块,用于通过所述工作线程将所述HTML字符串发送给所述模板引擎的主线程,使所述模板引擎的主线程根据所述HTML字符串显示页面。
在其中一个实施例中,所述装置还包括:
创建模块,用于调用预先定义的线程函数创建工作线程;
定义模块,用于定义所述工作线程的数据结构;
调用模块,用于使所述模板引擎的主线程调用所述数据结构向所述工作线程发送消息。
在其中一个实施例中,所述传递参数包括模板字符串及数据;
所述生成模块包括:
转化单元,用于通过所述工作线程将所述模板字符串转化为模板函数;
生成单元,用于使所述工作线程根据所述模板函数处理所述数据,生成HTML字符串。
在其中一个实施例中,所述装置还包括:
获取模块,用于通过所述工作线程获取所述传递参数的类型;
所述转化单元还用于当所述传递参数为模板字符串时,通过所述工作线程将所述模板字符串转化为模板函数,并将所述模板函数发送给所述模板引擎的主线程;
所述生成单元还用于当所述传递参数为模板函数及数据时,使所述工作线程根据所述模板函数处理所述数据,生成HTML字符串。
在其中一个实施例中,所述转化单元包括:
解析子单元,用于通过所述工作线程解析所述模板字符串,并获取所述模板字符串中的模板标识符;
转化子单元,用于将所述模板字符串转化为目标源码,并根据所述目标源码构建模板函数。
上述基于模板引擎的页面渲染方法和装置,通过工作线程监听并接收模板引擎的主线程发送的消息,解析消息得到传递参数,使工作线程根据传递参数生成HTML字符串,并将HTML字符串发送给模板引擎的主线程,实现页面渲染,通过工作线程异步完成HTML字符串的生成工作,使模板引擎的页面渲染工作实现多线程化,能够加速页面的渲染,提高页面的渲染性能,且页面无需等待渲染完成即可对用户的操作进行响应,不会出现页面卡顿的情况。
附图说明
图1为一个实施例中基于模板引擎的页面渲染方法的流程示意图;
图2为一个实施例中创建工作线程的流程示意图;
图3为一个实施例中通过工作线程生成HTML字符串的流程示意图;
图4为另一个实施例中通过工作线程生成HTML字符串的流程示意图;
图5为一个实施例中使工作线程根据模板函数处理数据生成HTML字符串的流程示意图;
图6为一个实施例中基于模板引擎的页面渲染装置的结构示意图;
图7为另一个实施例中基于模板引擎的页面渲染装置的结构示意图;
图8为一个实施例中生成模块的内部结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,一种基于模板引擎的页面渲染方法,包括以下步骤:
步骤S110,通过工作线程监听模板引擎的主线程发送的消息。
具体的,线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。用户在客户端通过URL(Uniform Resource Locator,统一资源定位符)访问页面,客户端从服务端获取页面相关的模板文件及数据后,可使用模板引擎对模板文件及数据进行编译,生成最终的HTML文件,实现页面渲染,从而展示页面。当模板引擎的主线程接收到模板文件及数据后,可调用工作线程的接口,将模板文件中的模板字符串及数据等作为传递参数,以消息的形式发送给工作线程。工作线程可使用ON_MESSAGE方法监听模板引擎的主线程发送的消息,ON_MESSAGE是一个自定义消息映射宏,可用于绑定一个自定义的消息和该消息的响应函数,通过ON_MESSAGE方法,工作线程可监听到模板引擎的主线程通过调用工作线程的接口发送的消息。
如图2所示,在一个实施例中,在步骤S110通过工作线程监听模板引擎的主线程发送的消息之前,还包括:
步骤S202,调用预先定义的线程函数创建工作线程。
具体的,客户端可通过预先定义的线程函数创建工作线程,工作线程也可称为WebWorker线程,Web Worker线程能够长时间运行去执行事务或者逻辑,并同时保证页面对用户的及时响应。在线程函数中可定义工作线程的堆栈大小、安全属性、优先级等,通过线程函数可创建符合实际需求的工作线程。
步骤S204,定义工作线程的数据结构。
具体的,创建好工作线程后,可定义工作线程的数据结构,即自定义工作线程对外开放的接口等。在本实施例中,可利用面向对象语言中的多态性定义工作线程的数据结构,使工作线程的接口具有多种不同的实现方式,例如对于同一用于使模板引擎的主线程传递消息的接口,其传递参数可为模板字符串及数据、模板字符串或是模板函数及数据,同一接口中的传递参数不同,工作线程的工作运行方式也不同。在其它的实施例中,也可通过定义工作线程的不同的数据结构来作为不同的工作运行方式的接口。
步骤S206,使模板引擎的主线程调用数据结构向工作线程发送消息。
具体的,定义的工作线程的数据结构即为工作线程对外开放的接口,模板引擎的主线程可通过调用定义的数据结构向工作线程发送消息,使工作线程根据消息中的传递参数生成HTML字符串,完成模板文件及数据的编译过程,进行页面渲染。创建工作线程,使模板引擎的主线程调用工作线程的接口发送消息,相当于将工作线程内嵌在模板引擎中,对于前端开发者而言,在使用时与传统的模板引擎相同,使用操作方便。
步骤S120,通过工作线程接收消息,并解析消息得到传递参数。
具体的,当工作线程通过ON_MESSAGE方法监听到模板引擎的主线程发送的消息时,接收该消息,并对消息进行解析,得到消息中包含的传递参数。
步骤S130,使工作线程根据传递参数生成HTML字符串。
具体的,工作线程解析模板引擎的主线程发送的消息得到传递参数后,可根据传递参数生成HTML字符串。在一个实施例中,传递参数可包括模板字符串及数据,则如图3所示,步骤S130使工作线程根据传递参数生成HTML字符串,包括:
步骤S302,通过工作线程将模板字符串转化为模板函数。
具体的,当消息中包含的传递参数为模板字符串及数据时,工作线程可先将模板字符串转化为模板函数,模板函数即为可执行的目标源码转化的函数对象,例如,将模板字符串转化为JS(JavaScript)源码、JAVA源码、C++源码等,转化完成后,模板函数可被执行。例如,模板字符串为hello,<%=name%>,<%%>中的内容即为模板,可将其转化为可执行的目标源码“hello”+obj.name,并使用new function()方法将其转化为模板函数。
步骤S304,使工作线程根据模板函数处理数据,生成HTML字符串。
具体的,工作线程将模板字符串转化为模板函数后,可利用数据执行模板函数,生成最终的HTML字符串,例如,传递参数中模板字符串为hello,<%=name%>,数据为{name:'world'},将模板字符串转化为可执行的目标源码“hello”+obj.name,并编译成模板函数,可利用数据执行模板函数,得到最终的HTML字符串为hello,world。
步骤S140,通过工作线程将HTML字符串发送给模板引擎的主线程,使模板引擎的主线程根据HTML字符串显示页面。
具体的,工作线程生成HTML字符串后,可将HTML字符串发送给模板引擎的主线程,模板引擎的主线程可将生成的HTML字符串更新到页面中,完成页面的渲染,显示页面。在工作线程生成HTML字符串的过程中,模板引擎的主线程可正常工作,响应用户的操作。
上述基于模板引擎的页面渲染方法,通过工作线程监听并接收模板引擎的主线程发送的消息,解析消息得到传递参数,使工作线程根据传递参数生成HTML字符串,并将HTML字符串发送给模板引擎的主线程,实现页面渲染,通过工作线程异步完成HTML字符串的生成工作,使模板引擎的页面渲染工作实现多线程化,能够加速页面的渲染,提高页面的渲染性能,且页面无需等待渲染完成即可对用户的操作进行响应,不会出现页面卡顿的情况。
如图4所示,在另一个实施例中,在步骤S120通过工作线程接收消息,并解析消息得到传递参数之后,还包括:
步骤S402,通过工作线程获取传递参数的类型。
具体的,工作线程解析模板引擎的主线程发送的消息,得到传递参数后,可获取传递参数的类型。传递参数的类型可包括模板字符串、数据及模板函数,当传递参数为模板字符串及数据时,工作线程生成最终的HTML字符串,当传递参数为模板字符串时,工作线程生成模板函数,当传递参数为模板函数及数据时,工作线程生成最终的HTML字符串,传递参数的类型不同,工作线程的工作方式也不同。
步骤S404,当传递参数为模板字符串时,通过工作线程将模板字符串转化为模板函数,并将模板函数发送给模板引擎的主线程。
具体的,当传递参数仅为模板字符串时,工作线程将模板字符串转化为模板函数,并将模板函数发送给模板引擎的主线程,模板引擎的主线程可将模板函数缓存在内存中,当下次需要利用模板函数生成HTML字符串时,无需重新编译模板字符串,只需从内存中获取即可,可降低内存的资源消耗。
如图5所示,在一个实施例中,通过工作线程将模板字符串转化为模板函数,包括:
步骤S502,通过工作线程解析模板字符串,并获取模板字符串中的模板标识符。
具体的,工作线程解析传递参数中的模板字符串,可通过正则表达式将模板字符串分为普通字符串及模板标识符,模板标识符用于表示模板内容,一般可通过特定符号与普通字符串分隔开,例如通过<%%>符号,在<%%>中的即为模板标识符。工作线程通过正则表达式可将普通字符串及模板标识符进行分离,可以实现快速处理复杂的模板字符串,在其它的实施例中,也可使用其它的字符串处理手段分离普通字符串及模板标识符,例如JS或JAVA语言本身自带的字符串处理方法等。
步骤S504,将模板字符串转化为目标源码,并根据目标源码构建模板函数。
具体的,工作线程解析模板字符串得到普通字符串及模板标识符后,可将模板字符串转化为可执行的目标源码,并将目标源码编译为函数对象,构建可调用执行的模板函数。例如,将模板字符串转化为目标源码后,可得到目标原码“hello”+obj.name,可构建生成模板函数new Function(‘obj’,“return‘hello,’+obj.name”),实现普通字符串及模板标识符转化的目标源码的拼接。
步骤S130使工作线程根据传递参数生成HTML字符串,包括:步骤S406,当传递参数为模板函数及数据时,使工作线程根据模板函数处理数据,生成HTML字符串。
具体的,当传递参数为模板函数及数据时,工作线程直接利用数据执行模板函数,生成HTML字符串,将数据替换模板字符串中的模板标识符。工作线程生成HTML字符串后,可将HTML字符串发送给模板引擎的主线程,模板引擎的主线程可将生成的HTML字符串更新到页面中,完成页面的渲染,显示页面。
上述基于模板引擎的页面渲染方法,工作线程可根据传递参数的不同选择不同的生成对象,可实现模板函数的预编译,无需每次编译模板字符串,降低内存资源的消耗,加速页面的渲染,提高页面的渲染性能。
如图6所示,一种基于模板引擎的页面渲染装置,包括监听模块610、接收模块620、生成模块630及发送模块640。
监听模块610,用于通过工作线程监听模板引擎的主线程发送的消息。
具体的,线程,有时被称为轻量级进程,是程序执行流的最小单元。用户在客户端通过URL访问页面,客户端从服务端获取页面相关的模板文件及数据后,可使用模板引擎对模板文件及数据进行编译,生成最终的HTML文件,实现页面渲染,从而展示页面。当模板引擎的主线程接收到模板文件及数据后,可调用工作线程的接口,将模板文件中的模板字符串及数据等作为传递参数,以消息的形式发送给工作线程。工作线程可使用ON_MESSAGE方法监听模板引擎的主线程发送的消息,ON_MESSAGE是一个自定义消息映射宏,可用于绑定一个自定义的消息和该消息的响应函数,通过ON_MESSAGE方法,工作线程可监听到模板引擎的主线程通过调用工作线程的接口发送的消息。
接收模块620,用于通过工作线程接收消息,并解析消息得到传递参数。
具体的,当工作线程通过ON_MESSAGE方法监听到模板引擎的主线程发送的消息时,接收该消息,并对消息进行解析,得到消息中包含的传递参数。
生成模块630,用于使工作线程根据传递参数生成HTML字符串。
具体的,工作线程解析模板引擎的主线程发送的消息得到传递参数后,可根据传递参数生成HTML字符串。
发送模块640,用于通过工作线程将HTML字符串发送给模板引擎的主线程,使模板引擎的主线程根据HTML字符串显示页面。
具体的,工作线程生成HTML字符串后,可将HTML字符串发送给模板引擎的主线程,模板引擎的主线程可将生成的HTML字符串更新到页面中,完成页面的渲染,显示页面。在工作线程生成HTML字符串的过程中,模板引擎的主线程可正常工作,响应用户的操作。
上述基于模板引擎的页面渲染装置,通过工作线程监听并接收模板引擎的主线程发送的消息,解析消息得到传递参数,使工作线程根据传递参数生成HTML字符串,并将HTML字符串发送给模板引擎的主线程,实现页面渲染,通过工作线程异步完成HTML字符串的生成工作,使模板引擎的页面渲染工作实现多线程化,能够加速页面的渲染,提高页面的渲染性能,且页面无需等待渲染完成即可对用户的操作进行响应,不会出现页面卡顿的情况。
如图7所示,在一个实施例中,上述基于模板引擎的页面渲染装置,除了包括监听模块610、接收模块620、生成模块630及发送模块640,还包括创建模块650、定义模块660及调用模块670。
创建模块650,用于调用预先定义的线程函数创建工作线程。
具体的,客户端可通过预先定义的线程函数创建工作线程,工作线程也可称为WebWorker线程,Web Worker线程能够长时间运行去执行事务或者逻辑,并同时保证页面对用户的及时响应。在线程函数中可定义工作线程的堆栈大小、安全属性、优先级等,通过线程函数可创建符合实际需求的工作线程。
定义模块660,用于定义工作线程的数据结构。
具体的,创建好工作线程后,可定义工作线程的数据结构,即自定义工作线程对外开放的接口等。在本实施例中,可利用面向对象语言中的多态性定义工作线程的数据结构,使工作线程的接口具有多种不同的实现方式,例如对于同一用于使模板引擎的主线程传递消息的接口,其传递参数可为模板字符串及数据、模板字符串或是模板函数及数据,同一接口中的传递参数不同,工作线程的工作运行方式也不同。在其它的实施例中,也可通过定义工作线程的不同的数据结构来作为不同的工作运行方式的接口。
调用模块670,用于使模板引擎的主线程调用数据结构向工作线程发送消息。
具体的,定义的工作线程的数据结构即为工作线程对外开放的接口,模板引擎的主线程可通过调用定义的数据结构向工作线程发送消息,使工作线程根据消息中的传递参数生成HTML字符串,完成模板文件及数据的编译过程,进行页面渲染。
上述基于模板引擎的页面渲染装置,创建工作线程,使模板引擎的主线程调用工作线程的接口发送消息,相当于将工作线程内嵌在模板引擎中,对于前端开发者而言,在使用时与传统的模板引擎相同,使用操作方便。
如图8所示,在一个实施例中,生成模块630包括转化单元632及生成单元634。
转化单元632,用于通过工作线程将模板字符串转化为模板函数。
具体的,传递参数可包括模板字符串及数据,当消息中包含的传递参数为模板字符串及数据时,工作线程可先将模板字符串转化为模板函数,模板函数即为可执行的目标源码转化的函数对象,例如,将模板字符串转化为JS源码、JAVA源码、C++源码等,转化完成后,模板函数可被执行。例如,模板字符串为hello,<%=name%>,<%%>中的内容即为模板,可将其转化为可执行的目标源码“hello”+obj.name,并使用new function()方法将其转化为模板函数。
转化单元632包括解析子单元322及转化子单元324。
解析子单元322,用于通过工作线程解析模板字符串,并获取模板字符串中的模板标识符。
具体的,工作线程解析传递参数中的模板字符串,可通过正则表达式将模板字符串分为普通字符串及模板标识符,模板标识符用于表示模板内容,一般可通过特定符号与普通字符串分隔开,例如通过<%%>符号,在<%%>中的即为模板标识符。工作线程通过正则表达式可将普通字符串及模板标识符进行分离,可以实现快速处理复杂的模板字符串,在其它的实施例中,也可使用其它的字符串处理手段分离普通字符串及模板标识符,例如JS或JAVA语言本身自带的字符串处理方法等。
转化子单元324,用于将模板字符串转化为目标源码,并根据目标源码构建模板函数。
具体的,工作线程解析模板字符串得到普通字符串及模板标识符后,可将模板字符串转化为可执行的目标源码,并将目标源码编译为函数对象,构建可调用执行的模板函数。例如,将模板字符串转化为目标源码后,可得到目标原码“hello”+obj.name,可构建生成模板函数new Function(‘obj’,“return‘hello,’+obj.name”),实现普通字符串及模板标识符转化的目标源码的拼接。
生成单元634,用于使工作线程根据所述模板函数处理所述数据,生成HTML字符串。
具体的,工作线程将模板字符串转化为模板函数后,可利用数据执行模板函数,生成最终的HTML字符串,例如,传递参数中模板字符串为hello,<%=name%>,数据为{name:'world'},将模板字符串转化为可执行的目标源码“hello”+obj.name,并编译成模板函数,可利用数据执行模板函数,得到最终的HTML字符串为hello,world。
上述基于模板引擎的页面渲染装置,工作线程编译模板字符串构建模板函数,并利用数据执行模板函数,得到HTML字符串,通过工作线程异步完成HTML字符串的生成工作,使模板引擎的页面渲染工作实现多线程化,能够加速页面的渲染,提高页面的渲染性能,且页面无需等待渲染完成即可对用户的操作进行响应,不会出现页面卡顿的情况。
在另一个实施例中,上述基于模板引擎的页面渲染装置,还包括获取模块,用于通过工作线程获取传递参数的类型。
具体的,工作线程解析模板引擎的主线程发送的消息,得到传递参数后,可获取传递参数的类型。传递参数的类型可包括模板字符串、数据及模板函数,当传递参数为模板字符串及数据时,工作线程生成最终的HTML字符串,当传递参数为模板字符串时,工作线程生成模板函数,当传递参数为模板函数及数据时,工作线程生成最终的HTML字符串,传递参数的类型不同,工作线程的工作方式也不同。
转化单元632还用于当传递参数为模板字符串时,通过工作线程将模板字符串转化为模板函数,并将模板函数发送给模板引擎的主线程。
具体的,当传递参数仅为模板字符串时,工作线程将模板字符串转化为模板函数,并将模板函数发送给模板引擎的主线程,模板引擎的主线程可将模板函数缓存在内存中,当下次需要利用模板函数生成HTML字符串时,无需重新编译模板字符串,只需从内存中获取即可,可降低内存的资源消耗。
生成单元634还用于当传递参数为模板函数及数据时,使工作线程根据模板函数处理所述数据,生成HTML字符串。
具体的,当传递参数为模板函数及数据时,工作线程直接利用数据执行模板函数,生成HTML字符串,将数据替换模板字符串中的模板标识符。工作线程生成HTML字符串后,可将HTML字符串发送给模板引擎的主线程,模板引擎的主线程可将生成的HTML字符串更新到页面中,完成页面的渲染,显示页面。
上述基于模板引擎的页面渲染装置,工作线程可根据传递参数的不同选择不同的生成对象,可实现模板函数的预编译,无需每次编译模板字符串,降低内存资源的消耗,加速页面的渲染,提高页面的渲染性能。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种基于模板引擎的页面渲染方法,包括以下步骤:
通过工作线程监听模板引擎的主线程发送的消息;
通过所述工作线程接收所述消息,并解析所述消息得到传递参数;
使所述工作线程根据所述传递参数生成HTML字符串;
通过所述工作线程将所述HTML字符串发送给所述模板引擎的主线程,使所述模板引擎的主线程根据所述HTML字符串显示页面。
2.根据权利要求1所述的基于模板引擎的页面渲染方法,其特征在于,在所述通过工作线程监听模板引擎的主线程发送的消息的步骤之前,还包括:
调用预先定义的线程函数创建工作线程;
定义所述工作线程的数据结构;
使所述模板引擎的主线程调用所述数据结构向所述工作线程发送消息。
3.根据权利要求1所述的基于模板引擎的页面渲染方法,其特征在于,所述传递参数包括模板字符串及数据;
所述使所述工作线程根据所述传递参数生成HTML字符串,包括:
通过所述工作线程将所述模板字符串转化为模板函数;
使所述工作线程根据所述模板函数处理所述数据,生成HTML字符串。
4.根据权利要求1所述的基于模板引擎的页面渲染方法,其特征在于,在所述通过所述工作线程接收所述消息,并解析所述消息得到传递参数的步骤之后,还包括:
通过所述工作线程获取所述传递参数的类型;
当所述传递参数为模板字符串时,通过所述工作线程将所述模板字符串转化为模板函数,并将所述模板函数发送给所述模板引擎的主线程;
所述使所述工作线程根据所述传递参数生成HTML字符串,包括:
当所述传递参数为模板函数及数据时,使所述工作线程根据所述模板函数处理所述数据,生成HTML字符串。
5.根据权利要求3或4所述的基于模板引擎的页面渲染方法,其特征在于,所述通过所述工作线程将所述模板字符串转化为模板函数,包括:
通过所述工作线程解析所述模板字符串,并获取所述模板字符串中的模板标识符;
将所述模板字符串转化为目标源码,并根据所述目标源码构建模板函数。
6.一种基于模板引擎的页面渲染装置,其特征在于,包括:
监听模块,用于通过工作线程监听模板引擎的主线程发送的消息;
接收模块,用于通过所述工作线程接收所述消息,并解析所述消息得到传递参数;
生成模块,用于使所述工作线程根据所述传递参数生成HTML字符串;
发送模块,用于通过所述工作线程将所述HTML字符串发送给所述模板引擎的主线程,使所述模板引擎的主线程根据所述HTML字符串显示页面。
7.根据权利要求6所述的基于模板引擎的页面渲染装置,其特征在于,所述装置还包括:
创建模块,用于调用预先定义的线程函数创建工作线程;
定义模块,用于定义所述工作线程的数据结构;
调用模块,用于使所述模板引擎的主线程调用所述数据结构向所述工作线程发送消息。
8.根据权利要求1所述的基于模板引擎的页面渲染装置,其特征在于,所述传递参数包括模板字符串及数据;
所述生成模块包括:
转化单元,用于通过所述工作线程将所述模板字符串转化为模板函数;
生成单元,用于使所述工作线程根据所述模板函数处理所述数据,生成HTML字符串。
9.根据权利要求8所述的基于模板引擎的页面渲染装置,其特征在于,所述装置还包括:
获取模块,用于通过所述工作线程获取所述传递参数的类型;
所述转化单元还用于当所述传递参数为模板字符串时,通过所述工作线程将所述模板字符串转化为模板函数,并将所述模板函数发送给所述模板引擎的主线程;
所述生成单元还用于当所述传递参数为模板函数及数据时,使所述工作线程根据所述模板函数处理所述数据,生成HTML字符串。
10.根据权利要求8或9所述的基于模板引擎的页面渲染装置,其特征在于,所述转化单元包括:
解析子单元,用于通过所述工作线程解析所述模板字符串,并获取所述模板字符串中的模板标识符;
转化子单元,用于将所述模板字符串转化为目标源码,并根据所述目标源码构建模板函数。
CN201610579123.4A 2016-07-20 2016-07-20 基于模板引擎的页面渲染方法和装置 Active CN107643889B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610579123.4A CN107643889B (zh) 2016-07-20 2016-07-20 基于模板引擎的页面渲染方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610579123.4A CN107643889B (zh) 2016-07-20 2016-07-20 基于模板引擎的页面渲染方法和装置

Publications (2)

Publication Number Publication Date
CN107643889A true CN107643889A (zh) 2018-01-30
CN107643889B CN107643889B (zh) 2020-03-24

Family

ID=61109070

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610579123.4A Active CN107643889B (zh) 2016-07-20 2016-07-20 基于模板引擎的页面渲染方法和装置

Country Status (1)

Country Link
CN (1) CN107643889B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829502A (zh) * 2018-06-21 2018-11-16 北京奇虎科技有限公司 线程操作的实现方法和装置
CN110263317A (zh) * 2019-06-27 2019-09-20 中国石油集团东方地球物理勘探有限责任公司 一种生成文档模板的方法及装置
CN111080766A (zh) * 2019-12-30 2020-04-28 中科星图股份有限公司 一种基于WebGL的GPU加速海量目标高效渲染方法
CN111552619A (zh) * 2020-04-29 2020-08-18 深圳市道旅旅游科技股份有限公司 日志数据展示方法、装置、计算机设备及存储介质
CN111913705A (zh) * 2020-05-28 2020-11-10 中南大学 一种基于差异更新算法的JavaScript模板实现方法
CN112256994A (zh) * 2020-10-20 2021-01-22 中企动力科技股份有限公司 一种模板渲染方法、装置、电子设备及存储介质
CN116991506A (zh) * 2023-09-28 2023-11-03 腾讯科技(深圳)有限公司 一种网页渲染方法、装置、终端和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090259934A1 (en) * 2008-04-11 2009-10-15 Go Hazel Llc System and method for rendering dynamic web pages with automatic ajax capabilities
CN103761317A (zh) * 2014-01-27 2014-04-30 北京京东尚科信息技术有限公司 一种多线程异步渲染系统及方法
CN104881320A (zh) * 2015-05-22 2015-09-02 北京京东尚科信息技术有限公司 一种可伸缩的生成文本的方法
CN105005568A (zh) * 2014-04-22 2015-10-28 中国银联股份有限公司 基于模板的web页面前端处理装置及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090259934A1 (en) * 2008-04-11 2009-10-15 Go Hazel Llc System and method for rendering dynamic web pages with automatic ajax capabilities
CN103761317A (zh) * 2014-01-27 2014-04-30 北京京东尚科信息技术有限公司 一种多线程异步渲染系统及方法
CN105005568A (zh) * 2014-04-22 2015-10-28 中国银联股份有限公司 基于模板的web页面前端处理装置及方法
CN104881320A (zh) * 2015-05-22 2015-09-02 北京京东尚科信息技术有限公司 一种可伸缩的生成文本的方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829502A (zh) * 2018-06-21 2018-11-16 北京奇虎科技有限公司 线程操作的实现方法和装置
CN108829502B (zh) * 2018-06-21 2021-11-23 北京奇虎科技有限公司 线程操作的实现方法和装置
CN110263317A (zh) * 2019-06-27 2019-09-20 中国石油集团东方地球物理勘探有限责任公司 一种生成文档模板的方法及装置
CN110263317B (zh) * 2019-06-27 2023-06-02 昆仑数智科技有限责任公司 一种生成文档模板的方法及装置
CN111080766A (zh) * 2019-12-30 2020-04-28 中科星图股份有限公司 一种基于WebGL的GPU加速海量目标高效渲染方法
CN111080766B (zh) * 2019-12-30 2023-09-01 中科星图股份有限公司 一种基于WebGL的GPU加速海量目标高效渲染方法
CN111552619B (zh) * 2020-04-29 2021-05-25 深圳市道旅旅游科技股份有限公司 日志数据展示方法、装置、计算机设备及存储介质
CN111552619A (zh) * 2020-04-29 2020-08-18 深圳市道旅旅游科技股份有限公司 日志数据展示方法、装置、计算机设备及存储介质
CN111913705A (zh) * 2020-05-28 2020-11-10 中南大学 一种基于差异更新算法的JavaScript模板实现方法
CN111913705B (zh) * 2020-05-28 2023-07-25 中南大学 一种基于差异更新算法的JavaScript模板实现方法
CN112256994A (zh) * 2020-10-20 2021-01-22 中企动力科技股份有限公司 一种模板渲染方法、装置、电子设备及存储介质
CN116991506A (zh) * 2023-09-28 2023-11-03 腾讯科技(深圳)有限公司 一种网页渲染方法、装置、终端和存储介质
CN116991506B (zh) * 2023-09-28 2024-04-30 腾讯科技(深圳)有限公司 一种网页渲染方法、装置、终端和存储介质

Also Published As

Publication number Publication date
CN107643889B (zh) 2020-03-24

Similar Documents

Publication Publication Date Title
CN107643889A (zh) 基于模板引擎的页面渲染方法和装置
CN102185901B (zh) 一种客户端报文转换方法
CN108984650B (zh) 计算机可读记录介质及计算机设备
CN104461484B (zh) 前端模板的实现方法和装置
CN105739963B (zh) 生成网页的方法和装置
CN107992301A (zh) 用户界面实现方法、客户端及存储介质
CN104410667A (zh) 一种xml报文到json报文的转换方法及系统
CN105589909A (zh) 数据可视化实现系统及方法
WO2013029399A1 (zh) 代码生成方法及系统
CN111061464B (zh) 解析代码生成方法、装置、设备及存储介质
CN106686023A (zh) 一种流程设计方法、客户机、服务器侧装置及系统
CN104135536A (zh) 一种基于json数据协议的Web管理系统数据交互方法
CN112104634A (zh) 数据报文处理方法、系统、设备及可读存储介质
CN111679886A (zh) 异构计算资源调度方法、系统、电子设备及存储介质
CN112083926A (zh) 一种Web用户界面生成方法及装置
CN112131289A (zh) 数据处理方法、装置、电子设备及存储介质
CN105024923B (zh) 基于xmpp扩展消息的消息分类实现的方法及装置
RU2014146752A (ru) Способ синтаксического анализа сервиса, гибко адаптированный к тегу ims системы
CN111130864A (zh) 使用模板采集可格式化网元数据的方法
CN109947435A (zh) 服务器集群软件环境的部署方法及系统
CN106708505B (zh) 一种基于web页面的批量操作界面的应用方法及系统
WO2017084515A1 (zh) 数据码流发送方法及装置
CN115525321A (zh) 分布式任务生成方法、装置、设备及存储介质
CN104239068B (zh) 多维度语义web服务开发方法
CN109446295B (zh) 一种svg数据地图编辑工具、编辑方法及计算机可读介质

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