一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法
【專利摘要】本發(fā)明公開(kāi)了一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法,其具體實(shí)現(xiàn)過(guò)程為:設(shè)計(jì)多套通用的html模版,以供模版風(fēng)格的切換;對(duì)應(yīng)不同的業(yè)務(wù)頁(yè)面,開(kāi)發(fā)設(shè)計(jì)HTML/XML生成器;將業(yè)務(wù)邏輯與數(shù)據(jù)預(yù)先運(yùn)行,生成的HTML顯示最終結(jié)果,HTML的標(biāo)簽動(dòng)態(tài)顯示業(yè)務(wù)數(shù)據(jù);在后臺(tái)管理添加風(fēng)格切換的入口,以達(dá)到模版切換的效果;界面設(shè)計(jì)人員修改模版里的內(nèi)容,程序開(kāi)發(fā)人員修改生成器,完成對(duì)整個(gè)模塊的維護(hù)。該一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法與現(xiàn)有技術(shù)相比,整體實(shí)現(xiàn)過(guò)程簡(jiǎn)單,C#代碼從web頁(yè)面中分離出來(lái),這樣為web系統(tǒng)的長(zhǎng)期維護(hù)提供了便利,實(shí)用性強(qiáng),適用范圍廣泛,易于推廣。
【專利說(shuō)明】
一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體地說(shuō)是一種實(shí)用性強(qiáng)、用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]一般的微軟.net平臺(tái)分層架構(gòu)開(kāi)發(fā)web頁(yè)面類型為aspx,一個(gè)Cs文件對(duì)應(yīng)一個(gè)aspx頁(yè)面,源碼的文件結(jié)構(gòu)無(wú)法將需服務(wù)器端執(zhí)行的代碼集中管理。執(zhí)行時(shí),因?yàn)轭l繁的執(zhí)行調(diào)用服務(wù)器端的程序來(lái)返回到前端用戶數(shù)據(jù),相比服務(wù)器負(fù)荷較重,由于HTML與C#混在一起,無(wú)法很便捷的檢索;每次訪問(wèn)頁(yè)面都要加載.net控件,無(wú)法預(yù)先運(yùn)行控件得到返回的結(jié)果在提供訪問(wèn)的靜態(tài)頁(yè)面里,性能也無(wú)法達(dá)到最佳,使用偽靜態(tài)可避免URL傳參暴敏感信息問(wèn)題,界面設(shè)計(jì)人員可以只關(guān)注模版。
[0003]眾所周知,靜態(tài)HTML頁(yè)面訪問(wèn)的時(shí)候無(wú)需與服務(wù)器端交互,是加載速度最快的,所以一種可以預(yù)先加載程序?qū)TML產(chǎn)生出來(lái),用戶只訪問(wèn)預(yù)先加載好的HTML的方式可以免去傳遞URL敏感信息等與服務(wù)端交互的安全性隱患,可以很好的提升性能與訪問(wèn)速度。為提高安全性、可維護(hù)性、性能,本發(fā)明提供一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的技術(shù)任務(wù)是針對(duì)以上不足之處,提供一種實(shí)用性強(qiáng)、用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法。
[0005]—種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法,其具體實(shí)現(xiàn)過(guò)程為:
設(shè)計(jì)多套通用的html模版,以供模版風(fēng)格的切換;
對(duì)應(yīng)不同的業(yè)務(wù)頁(yè)面,開(kāi)發(fā)設(shè)計(jì)HTML/XML生成器;
將業(yè)務(wù)邏輯與數(shù)據(jù)預(yù)先運(yùn)行,生成的HTML顯示最終結(jié)果,HTML的標(biāo)簽動(dòng)態(tài)顯示業(yè)務(wù)數(shù)據(jù);
在后臺(tái)管理添加風(fēng)格切換的入口,以達(dá)到模版切換的效果;
界面設(shè)計(jì)人員修改模版里的內(nèi)容,程序開(kāi)發(fā)人員修改生成器,完成對(duì)整個(gè)模塊的維護(hù)。
[0006]所述通用的HTML模版該html模版包括網(wǎng)頁(yè)的頭部、中間數(shù)據(jù)顯示區(qū)和網(wǎng)頁(yè)底部信息區(qū),并在每個(gè)HTML的要顯示數(shù)據(jù)的區(qū)域添加標(biāo)簽,設(shè)計(jì)css樣式、圖片,封裝JS并引入到HTML模版,可設(shè)計(jì)多套模版以供模版風(fēng)格的切換。
[0007]所述HTML/XML生成器采用C#設(shè)計(jì),該生成器程序的文件類型為aspx或ashx。
[0008]所述HTML/XML生成器程序運(yùn)行的生命周期為:
加載.net控件取得數(shù)據(jù);
加載StreamWriter操作類實(shí)例化的對(duì)象,讀取HTML對(duì)象值,該對(duì)象值為HTML頁(yè)面的代碼;
將.net控件執(zhí)行獲得的數(shù)據(jù)替換掉原有的HTML上的標(biāo)簽;
實(shí)例化一個(gè)StreamReader對(duì)象生成新的HTML頁(yè)面并存放到一個(gè)指定的文件夾; 預(yù)先執(zhí)行引擎后生成新的HTML存放到指定的文件夾,將執(zhí)行后的項(xiàng)目發(fā)布出來(lái),放在web站點(diǎn)供用戶訪問(wèn);
用戶操作和訪問(wèn)系統(tǒng)即訪問(wèn)新的靜態(tài)HTML頁(yè)面。
[0009]所述模版切換的效果是指通過(guò)js與cs控制出現(xiàn)模版的不同分辨率、色彩、界面風(fēng)格。
[0010]當(dāng)維護(hù)模版的步驟中需要進(jìn)行變更修改時(shí),即界面修改或更換修改模版內(nèi)容,首先通過(guò)業(yè)務(wù)邏輯、數(shù)據(jù)處理接口修改生成器的內(nèi)容,再次登錄項(xiàng)目管理后臺(tái)的生成操作入口生成修改的頁(yè)面,訪問(wèn)時(shí)清除客戶端緩存文件或重啟服務(wù)端信息服務(wù)。
[0011]本發(fā)明的一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法,具有以下優(yōu)點(diǎn):
本發(fā)明的一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法,將引擎分為模版、HTML\XML生成器、操作和管理入口,允許任何人僅僅簡(jiǎn)單的使用模板語(yǔ)言來(lái)引用由C#代碼定義的對(duì)象,界面設(shè)計(jì)人員可以和c#程序開(kāi)發(fā)人員同步開(kāi)發(fā)一個(gè)系統(tǒng),頁(yè)面設(shè)計(jì)人員可以只關(guān)注頁(yè)面的顯示效果,而由C#程序開(kāi)發(fā)人員關(guān)注業(yè)務(wù)邏輯編碼,C#代碼從web頁(yè)面中分離出來(lái),這樣為web系統(tǒng)的長(zhǎng)期維護(hù)提供了便利,實(shí)用性強(qiáng),適用范圍廣泛,易于推廣。
【附圖說(shuō)明】
[0012]附圖1為本發(fā)明的實(shí)現(xiàn)示意圖。
【具體實(shí)施方式】
[0013]下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
[0014]如附圖1所示,本發(fā)明提供一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法,通過(guò)預(yù)先加載程序?qū)TML產(chǎn)生出來(lái),用戶只訪問(wèn)預(yù)先加載好的HTML的方式,可以免去傳遞URL敏感信息等與服務(wù)端交互的安全性隱患。
[0015]其具體實(shí)現(xiàn)過(guò)程為:
1、設(shè)計(jì)通用的html模版(top.html、context.html、bottom.html),分別為網(wǎng)頁(yè)的頭部,中間數(shù)據(jù)顯示區(qū),和網(wǎng)頁(yè)底部信息區(qū),并在每個(gè)html的要顯示數(shù)據(jù)的區(qū)域添加標(biāo)簽〃$text$〃例如〃〈(1;^>〈8口311>$七61七$〈8口311>〈(1;^>〃。設(shè)計(jì)088樣式、圖片,封裝界并引入到!^111^模版,可設(shè)計(jì)多套模版以供模版風(fēng)格的切換。
[0016]2、傳統(tǒng)的.net項(xiàng)目使用.net控件,每次用戶訪問(wèn)要執(zhí)行一次控件的前端與服務(wù)端交互,如果用戶訪問(wèn)量大的情況,服務(wù)端的壓力是比較重的,在這里,對(duì)應(yīng)不同的業(yè)務(wù)頁(yè)面開(kāi)發(fā)HTML/XML生成器(C# ),程序的文件類型為aspx或ashx,程序運(yùn)行的生命周期為:
a、加載.net控件取得數(shù)據(jù)。
[0017]b、加載StreamWriter操作類實(shí)例化的對(duì)象,讀取HTML(sr = new StreamReader(mbPath, 〃template/context.html〃)),此時(shí)這個(gè)對(duì)象值是HTML頁(yè)面的代碼。
[0018]C、將.net控件執(zhí)行獲得的數(shù)據(jù)替換掉原有的HTML上的標(biāo)簽(例如上述“allStr = allStr.Replace(〃$text$〃, txtContent.Text))。
[0019]d、實(shí)例化一個(gè)StreamReader對(duì)象生成新的HTML頁(yè)面并存放到一個(gè)指定的文件夾(sw = new Streamffriter(Server.MapPath(^htm/^) + fiIeName, false , code);sw.ffrite(allStr); sw.FlushO ;)。
[0020]e、預(yù)先執(zhí)行引擎后生成新的HTML存放到指定的文件夾。將執(zhí)行后的項(xiàng)目發(fā)布出來(lái),放在web站點(diǎn)供用戶訪問(wèn)。
[0021]f、用戶操作和訪問(wèn)系統(tǒng)即訪問(wèn)新的靜態(tài)HTML頁(yè)面。
[0022]3、將業(yè)務(wù)邏輯與數(shù)據(jù)預(yù)先運(yùn)行,生成的HTML將顯示最終結(jié)果,HTML的標(biāo)簽將動(dòng)態(tài)顯示業(yè)務(wù)數(shù)據(jù)。
[0023]4、在項(xiàng)目后臺(tái)管理添加風(fēng)格切換的入口,以達(dá)到模版切換的效果(不同分辨率、色彩、界面風(fēng)格,js與CS控制)。
[0024]5、維護(hù):界面設(shè)計(jì)人員修改模版里的內(nèi)容(template),程序開(kāi)發(fā)人員修改生成器。
[0025]具體實(shí)施過(guò)程為:
將css、image、htm文件夾置于模版文件夾template下。
[0026]將template放在項(xiàng)目pro ject根目錄下。
[0027]將生成器文件(*.cs/*ashx)置于生成器文件夾buildProgram下。
[0028]將buiIdProgram文件夾置入項(xiàng)目管理后臺(tái)程序文件夾pro jectAadmin下。
[0029]登陸項(xiàng)目管理后臺(tái)程序,進(jìn)入生成器生成頁(yè)面操作入口,可一鍵生成全部靜態(tài)頁(yè)面,也可以單個(gè)進(jìn)行生成操作,頁(yè)面生成路徑為項(xiàng)目pro ject根目錄下的business文件夾下。
[0030]生成后需要清除客戶端緩存文件或重啟服務(wù)端信息服務(wù)以保證訪問(wèn)的頁(yè)面是最新生成的。
[0031]在項(xiàng)目后臺(tái)管理風(fēng)格切換的入口,以達(dá)到模版切換的效果(不同分辨率、色彩、界面風(fēng)格)。
[0032]變更修改:界面修改或更換修改template文件夾的內(nèi)容,如CSS文件,圖片文件,業(yè)務(wù)邏輯、數(shù)據(jù)處理接口修改bui IdProgram文件夾的內(nèi)容,再次登錄項(xiàng)目管理后臺(tái)的生成操作入口生成修改的頁(yè)面,訪問(wèn)時(shí)清除客戶端緩存文件或重啟服務(wù)端信息服務(wù)。
[0033]此方法允許任何人僅僅簡(jiǎn)單的使用模板語(yǔ)言(template language)來(lái)引用由C#代碼定義的對(duì)象。界面設(shè)計(jì)人員可以和c#程序開(kāi)發(fā)人員同步開(kāi)發(fā)一個(gè)系統(tǒng),頁(yè)面設(shè)計(jì)人員可以只關(guān)注頁(yè)面的顯示效果,而由C#程序開(kāi)發(fā)人員關(guān)注業(yè)務(wù)邏輯編碼。C#代碼從web頁(yè)面中分離出來(lái),這樣為web系統(tǒng)的長(zhǎng)期維護(hù)提供了便利。此方法的能力遠(yuǎn)不止web系統(tǒng)開(kāi)發(fā)這個(gè)領(lǐng)域,例如,它可以從模板(template )產(chǎn)生SQL和Script、XML,它也可以被當(dāng)作一個(gè)獨(dú)立工具來(lái)產(chǎn)生源代碼和報(bào)告,或者作為其他系統(tǒng)的集成組件使用。
[0034]上述【具體實(shí)施方式】?jī)H是本發(fā)明的具體個(gè)案,本發(fā)明的專利保護(hù)范圍包括但不限于上述【具體實(shí)施方式】,任何符合本發(fā)明的一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法的權(quán)利要求書(shū)的且任何所述技術(shù)領(lǐng)域的普通技術(shù)人員對(duì)其所做的適當(dāng)變化或替換,皆應(yīng)落入本發(fā)明的專利保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法,其特征在于,其具體實(shí)現(xiàn)過(guò)程為: 設(shè)計(jì)多套通用的html模版,以供模版風(fēng)格的切換; 對(duì)應(yīng)不同的業(yè)務(wù)頁(yè)面,開(kāi)發(fā)設(shè)計(jì)HTML/XML生成器; 將業(yè)務(wù)邏輯與數(shù)據(jù)預(yù)先運(yùn)行,生成的HTML顯示最終結(jié)果,HTML的標(biāo)簽動(dòng)態(tài)顯示業(yè)務(wù)數(shù)據(jù); 在后臺(tái)管理添加風(fēng)格切換的入口,以達(dá)到模版切換的效果; 界面設(shè)計(jì)人員修改模版里的內(nèi)容,程序開(kāi)發(fā)人員修改生成器,完成對(duì)整個(gè)模塊的維護(hù)。2.根據(jù)權(quán)利要求1所述的一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法,其特征在于,所述通用的HTML模版該html模版包括網(wǎng)頁(yè)的頭部、中間數(shù)據(jù)顯示區(qū)和網(wǎng)頁(yè)底部信息區(qū),并在每個(gè)HTML的要顯示數(shù)據(jù)的區(qū)域添加標(biāo)簽,設(shè)計(jì)css樣式、圖片,封裝JS并引入到HTML模版,可設(shè)計(jì)多套模版以供模版風(fēng)格的切換。3.根據(jù)權(quán)利要求1所述的一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法,其特征在于,所述HTML/XML生成器采用C#設(shè)計(jì),該生成器程序的文件類型為aspx或ashx。4.根據(jù)權(quán)利要求3所述的一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法,其特征在于,HTML/XML生成器程序運(yùn)行的生命周期為: 加載.net控件取得數(shù)據(jù); 加載StreamWriter操作類實(shí)例化的對(duì)象,讀取HTML對(duì)象值,該對(duì)象值為HTML頁(yè)面的代碼; 將.net控件執(zhí)行獲得的數(shù)據(jù)替換掉原有的HTML上的標(biāo)簽; 實(shí)例化一個(gè)StreamReader對(duì)象生成新的HTML頁(yè)面并存放到一個(gè)指定的文件夾; 預(yù)先執(zhí)行引擎后生成新的HTML存放到指定的文件夾,將執(zhí)行后的項(xiàng)目發(fā)布出來(lái),放在web站點(diǎn)供用戶訪問(wèn); 用戶操作和訪問(wèn)系統(tǒng)即訪問(wèn)新的靜態(tài)HTML頁(yè)面。5.根據(jù)權(quán)利要求1所述的一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法,其特征在于,所述模版切換的效果是指通過(guò)js與CS控制出現(xiàn)模版的不同分辨率、色彩、界面風(fēng)格。6.根據(jù)權(quán)利要求1-5任一所述的一種用于Web開(kāi)發(fā)的模板引擎實(shí)現(xiàn)方法,其特征在于,當(dāng)維護(hù)模版的步驟中需要進(jìn)行變更修改時(shí),即界面修改或更換修改模版內(nèi)容,首先通過(guò)業(yè)務(wù)邏輯、數(shù)據(jù)處理接口修改生成器的內(nèi)容,再次登錄項(xiàng)目管理后臺(tái)的生成操作入口生成修改的頁(yè)面,訪問(wèn)時(shí)清除客戶端緩存文件或重啟服務(wù)端信息服務(wù)。
【文檔編號(hào)】G06F9/44GK105955759SQ201610357728
【公開(kāi)日】2016年9月21日
【申請(qǐng)日】2016年5月26日
【發(fā)明人】張家重, 連堃, 曹興會(huì), 李貴, 王玉奎
【申請(qǐng)人】浪潮(蘇州)金融技術(shù)服務(wù)有限公司