吳爭榮 梁耀文 徐長飛
摘要:本文探討了模板引擎的概念及模板設計的重要性,分析了模板引擎設計中存在的問題,研究了填空式在線前端邏輯代碼編排方法的應用。
關鍵詞:模板引擎;代碼編排;FreeMarker;模板語言
中圖分類號:TP311.5 文獻標識碼:A 文章編號:1007-9416(2019)12-0043-02
1 技術背景
模板引擎是通過標準的文檔生成,將用戶界面與業(yè)務數(shù)據(jù)相分離,它主要適用于網(wǎng)站模板引擎,文檔主要是指HTML文檔。例如在WEB系統(tǒng)開發(fā)過程中,程序開發(fā)人員及美工人員要明確自身的工作范圍和職責。同時,在生成代碼時,應通過模板的設置來減輕機械的操作量,提高機械整體的工作效率。模板引擎的產(chǎn)生,是為了滿足設計人員的需求,無需了解如何實現(xiàn)程序邏輯,只需要理解自己的界面呈現(xiàn)。但是設計人員必須要學習模板引擎實用方法,包括模板語法,模板變量,甚至有些變量或參數(shù)在設計模板時需要跟程序員協(xié)商好,該使用哪些變量、如何使用等等。設想一下,如果模板引擎浮躁到一定程度,無異于要設計人員學習一種新的程序語言,而模板頁面必定會包含一些類似于ASP、PHP一樣的腳本語言,防腐又回到了代碼與界面加載在一起的年代,不同的是,這些都是設計人員來做的。所以,發(fā)明人認為,模板引擎不能太復雜,但也必須具備一些程序語言的基本語法語句,比如:判斷語句、循環(huán)語句等等。目前一般的CMS系統(tǒng)所謂的模板標簽功能,其解析過程襯不上什么模板引擎,一個好的模板引擎,應該具有通用性、靈活性、拓展性,當然在一個具體的應用中,設計適合自己的模板引擎,就是最好的模板引擎。
2 存在的問題
綜上分析,在模板引擎設計中仍存在的技術問題:(1)現(xiàn)有前端業(yè)務應用開發(fā)效率低。(2)現(xiàn)有前端模板引擎拓展能力差。為了解決以問題,需要構建填空式在線前端邏輯代碼編排方法,掌握好編排方法的特征,通過對業(yè)務應用前端展現(xiàn)的場景梳理,形成前端常用業(yè)務應用場景行為模板,以提升業(yè)務應用開發(fā)效率。同時以靈活的形式為特殊業(yè)務邏輯代碼提供擴展能力。
3 編排方法的特征
基于填空式在線前端邏輯代碼編排方法,以在線開發(fā)的形式提供前端業(yè)務展現(xiàn)、交付等代碼編排能力,通過對業(yè)務應用前端展現(xiàn)的場景梳理形成前端常用業(yè)務應用場景行為模板,提升業(yè)務應用開發(fā)效率,提供統(tǒng)一的、高質量的業(yè)務實現(xiàn)框架骨干代碼,同時以靈活的整行、多行、插入、行折分等形式提供對特殊業(yè)務邏輯代碼的擴展能力;此方法具有如下特征:
(1)以模板庫形式提供豐富的常用場景前端代碼模板,同時為軟件資產(chǎn)沉淀提供模板擴展機制;(2)在線編排,在線運行,實時呈現(xiàn)完整前端業(yè)務效果,實現(xiàn)開發(fā)與運行同步;(3)統(tǒng)一業(yè)務場景實現(xiàn)代碼框架,保障業(yè)務應用實現(xiàn)模式一致性;(4)支持整行、多行、填空等多種形式的業(yè)務邏輯代碼編排形式;(5)提供動態(tài)的在線語法提示與檢查;(6)以web形式提供在線操作,無需任何插件、應用安裝。
4 基于填空式在線前端邏輯代碼編排方法
FreeMarker作為模板引擎中的一種通用工具,其主要是通過數(shù)據(jù)的改變來生成輸出文本,包括配置文件、HTML網(wǎng)頁和源代碼等。它作為一個Java類庫,可以程序員嵌入開發(fā)產(chǎn)品的組件,故它并不是直接面向最終用戶。
模板編寫是一種專用的語言,也稱為FreeMarker Template Language(FTL)。它并不需要在真實編程語言中將準備數(shù)據(jù)(包括數(shù)據(jù)庫查詢和業(yè)務運算)顯示出來,而是其模板可以顯示已準備的數(shù)據(jù)。在以上模板中,可以通過MVC(模型視圖控制器)模式的方式來展示相應的數(shù)據(jù),見圖1所示。
對于動態(tài)網(wǎng)頁而言,以上模式是一種流行模式。它不僅可以輔助Java程序員將出網(wǎng)頁設計師分離出來,且可以減少設計人員的工作量,如不需要采用模板中的復雜邏輯,它可以自動修改頁面的樣式,不需要程序員重新編譯代碼。
FreeMarker設計是在MVC模式中所采用的Web開發(fā)框架,并能夠生成HTML頁面,其不需要與Servlet或HTML進行綁定,且不與任意Web綁定,其主要應用于非Web環(huán)境當中。
當前,對于FreeMarker來說,主要具有以下特點:
(1)通用性。FreeMarker可生成XML、HTML、Java源代碼等各種文本。不需要與Servlet進行綁定,且容易嵌入到產(chǎn)品當中。采用了插件式載入器,故可以從本地文件、數(shù)據(jù)庫等載入模板。用戶可以根據(jù)需求生成文本,如可以將文本保存到本地文件,同時可以利用Email發(fā)送文件,且可以從Web返回至瀏覽器。(2)模板語言。FreeMarker采用了循環(huán)結構,以else/include、if/elseif等常用的指令為主。在FreeMarker模板中,可以根據(jù)需求進行變量創(chuàng)建。在任何地方,可利用模板引擎來復雜表達式來表示指定值??筛鶕?jù)位置參數(shù)和嵌套內(nèi)容進行宏命名??衫妹挚臻g構建可重用的宏庫,同時還可以將工程劃分為不同的模塊,以避免名字出現(xiàn)沖突??奢敵鲛D換塊,如能夠在模板中生成輸出,實現(xiàn)HTML轉換與壓縮,另外,還可以根據(jù)自己的轉換進行定義。(3)通用數(shù)據(jù)模型。FreeMarker作為一種模板引擎,它不是通過Java對象直接反射,而是利用Java對象進行插件式對象封裝,并可以在模板中以變量方式將它顯示??墒褂媒涌诘姆绞絹肀硎綳ML文檔、SQL查詢結果和JavaBean等對象,以便于模板開發(fā)過程中使用。且它不會受到技術細節(jié)的影響。(4)Web準備??稍谀0逭Z言中構建WebHTML轉義的結構。能夠以JSP的替代的身份集成至Model2 Web應用框架中。且可以支持JSP標記庫。采用了MVC設計模式,可實現(xiàn)可視化設計,且能夠利用程序邏輯進行頁面設計。(5)智能的國際化和本地化。FreeMarker實現(xiàn)了字符集智能化,其內(nèi)部使用UNICODE。實現(xiàn)了數(shù)字格式、日期和時間本地化敏感。采用非US字符集,可將它作為變量名。同時還可以以不同語言來構建相同模板。(6)XML處理能力。以2.3版本為例,可通過<#recurse>和<#visit>等指令進行遍歷XML樹遞歸。可以通過模板進行XML對象模型訪問。
5 結語
綜上所述,基于填空式在線前端邏輯代碼編排方法,以在線開發(fā)的形式提供前端業(yè)務展現(xiàn)、交付等代碼編排能力,通過對業(yè)務應用前端展現(xiàn)的場景梳理形成前端常用業(yè)務應用場景行為模板,提升業(yè)務應用開發(fā)效率,提供統(tǒng)一的、高質量的業(yè)務實現(xiàn)框架骨干代碼,同時以靈活的整行、多行、插入、行折分等形式提供對特殊業(yè)務邏輯代碼的擴展能力。
Research and Application of? On-line Front-end Logic Code Arrangement Method based on Fill in Blank
WU Zheng-rong, LIANG Yao-wen, XU Chang-fei
(China Southern Power Grid Co., Ltd., Guangzhou? Guangdong? 510623)
Abstract:This paper discusses the concept of template engine and the importance of template design, analyzes the problems in template engine design, and studies the application of fill in front-end logic code arrangement method.
Key words:template engine; coding; FreeMarker; template language