一种用于Web开发的模板引擎实现方法技术领域
本发明涉及计算机技术领域,具体地说是一种实用性强、用于Web开发的模板引擎实现方法。
背景技术
一般的微软.net平台分层架构开发web页面类型为aspx,一个cs文件对应一个aspx页面,源码的文件结构无法将需服务器端执行的代码集中管理。执行时,因为频繁的执行调用服务器端的程序来返回到前端用户数据,相比服务器负荷较重,由于HTML与C#混在一起,无法很便捷的检索;每次访问页面都要加载.net控件,无法预先运行控件得到返回的结果在提供访问的静态页面里,性能也无法达到最佳,使用伪静态可避免URL传参暴敏感信息问题,界面设计人员可以只关注模版。
众所周知,静态HTML页面访问的时候无需与服务器端交互,是加载速度最快的,所以一种可以预先加载程序将HTML产生出来,用户只访问预先加载好的HTML的方式可以免去传递URL敏感信息等与服务端交互的安全性隐患,可以很好的提升性能与访问速度。为提高安全性、可维护性、性能,本发明提供一种用于Web开发的模板引擎实现方法。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、用于Web开发的模板引擎实现方法。
一种用于Web开发的模板引擎实现方法,其具体实现过程为:
设计多套通用的html模版,以供模版风格的切换;
对应不同的业务页面,开发设计HTML/XML生成器;
将业务逻辑与数据预先运行,生成的HTML显示最终结果,HTML的标签动态显示业务数据;
在后台管理添加风格切换的入口,以达到模版切换的效果;
界面设计人员修改模版里的内容,程序开发人员修改生成器,完成对整个模块的维护。
所述通用的HTML模版该html模版包括网页的头部、中间数据显示区和网页底部信息区,并在每个HTML的要显示数据的区域添加标签,设计css样式、图片,封装JS并引入到HTML模版,可设计多套模版以供模版风格的切换。
所述HTML/XML生成器采用C#设计,该生成器程序的文件类型为aspx或ashx。
所述HTML/XML生成器程序运行的生命周期为:
加载.net控件取得数据;
加载StreamWriter操作类实例化的对象,读取HTML对象值,该对象值为HTML页面的代码;
将.net控件执行获得的数据替换掉原有的HTML上的标签;
实例化一个StreamReader对象生成新的HTML页面并存放到一个指定的文件夹;
预先执行引擎后生成新的HTML存放到指定的文件夹,将执行后的项目发布出来,放在web站点供用户访问;
用户操作和访问系统即访问新的静态HTML页面。
所述模版切换的效果是指通过js与cs控制出现模版的不同分辨率、色彩、界面风格。
当维护模版的步骤中需要进行变更修改时,即界面修改或更换修改模版内容,首先通过业务逻辑、数据处理接口修改生成器的内容,再次登录项目管理后台的生成操作入口生成修改的页面,访问时清除客户端缓存文件或重启服务端信息服务。
本发明的一种用于Web开发的模板引擎实现方法,具有以下优点:
本发明的一种用于Web开发的模板引擎实现方法,将引擎分为模版、HTML\XML生成器、操作和管理入口,允许任何人仅仅简单的使用模板语言来引用由C#代码定义的对象,界面设计人员可以和c#程序开发人员同步开发一个系统,页面设计人员可以只关注页面的显示效果,而由C#程序开发人员关注业务逻辑编码,C#代码从web页面中分离出来,这样为web系统的长期维护提供了便利,实用性强,适用范围广泛,易于推广。
附图说明
附图1为本发明的实现示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步说明。
如附图1所示,本发明提供一种用于Web开发的模板引擎实现方法,通过预先加载程序将HTML产生出来,用户只访问预先加载好的HTML的方式,可以免去传递URL敏感信息等与服务端交互的安全性隐患。
其具体实现过程为:
1、设计通用的html模版(top.html、context.html、bottom.html),分别为网页的头部,中间数据显示区,和网页底部信息区,并在每个html的要显示数据的区域添加标签"$text$"例如"<div><span>$text$<span><div>"。设计css样式、图片,封装JS并引入到HTML模版,可设计多套模版以供模版风格的切换。
2、传统的.net项目使用.net控件,每次用户访问要执行一次控件的前端与服务端交互,如果用户访问量大的情况,服务端的压力是比较重的,在这里,对应不同的业务页面开发HTML/XML生成器(C#),程序的文件类型为aspx或ashx,程序运行的生命周期为:
a、加载.net控件取得数据。
b、加载StreamWriter操作类实例化的对象,读取HTML(sr = new StreamReader(mbPath, "template/context.html")),此时这个对象值是HTML页面的代码。
c、将.net控件执行获得的数据替换掉原有的HTML上的标签(例如上述“$text$”, allStr = allStr.Replace("$text$", txtContent.Text))。
d、实例化一个StreamReader对象生成新的HTML页面并存放到一个指定的文件夹(sw = new StreamWriter(Server.MapPath("htm/") + fileName, false, code); sw.Write(allStr); sw.Flush();)。
e、预先执行引擎后生成新的HTML存放到指定的文件夹。将执行后的项目发布出来,放在web站点供用户访问。
f、用户操作和访问系统即访问新的静态HTML页面。
3、将业务逻辑与数据预先运行,生成的HTML将显示最终结果,HTML的标签将动态显示业务数据。
4、在项目后台管理添加风格切换的入口,以达到模版切换的效果(不同分辨率、色彩、界面风格,js与cs控制)。
5、维护:界面设计人员修改模版里的内容(template),程序开发人员修改生成器。
具体实施过程为:
将css、image、htm文件夹置于模版文件夹template下。
将template放在项目project根目录下。
将生成器文件(*.cs/*ashx)置于生成器文件夹buildProgram下。
将buildProgram文件夹置入项目管理后台程序文件夹projectAadmin下。
登陆项目管理后台程序,进入生成器生成页面操作入口,可一键生成全部静态页面,也可以单个进行生成操作,页面生成路径为项目project根目录下的business文件夹下。
生成后需要清除客户端缓存文件或重启服务端信息服务以保证访问的页面是最新生成的。
在项目后台管理风格切换的入口,以达到模版切换的效果(不同分辨率、色彩、界面风格)。
变更修改:界面修改或更换修改template文件夹的内容,如CSS文件,图片文件,业务逻辑、数据处理接口修改buildProgram文件夹的内容,再次登录项目管理后台的生成操作入口生成修改的页面,访问时清除客户端缓存文件或重启服务端信息服务。
此方法允许任何人仅仅简单的使用模板语言(template language)来引用由C#代码定义的对象。界面设计人员可以和c#程序开发人员同步开发一个系统,页面设计人员可以只关注页面的显示效果,而由C#程序开发人员关注业务逻辑编码。C#代码从web页面中分离出来,这样为web系统的长期维护提供了便利。此方法的能力远不止web系统开发这个领域,例如,它可以从模板(template)产生SQL和Script、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种用于Web开发的模板引擎实现方法的权利要求书的且任何所述技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。