Posted on 2005-11-14 15:37
canonical 閱讀(689)
評(píng)論(1) 編輯 收藏 所屬分類:
Witrix開發(fā)平臺(tái)
傳統(tǒng)上,設(shè)計(jì)了一種配置文件的格式之后我們需要實(shí)現(xiàn)一個(gè)相應(yīng)的解釋器(interpreter)來解析該配置文件并執(zhí)行相應(yīng)的動(dòng)作。一個(gè)配置文件其實(shí)就是一個(gè)微型的DSL(Domain Specific Language)。配置文件采用xml格式是一種理想的方式,因?yàn)閤ml是自說明的(self-descriptive),不再需要額外的文檔我們就可以直接理解配置文件的結(jié)構(gòu)。但是我們?nèi)匀粺o法避免編寫配置文件解釋器的工作。Apache項(xiàng)目組的Digester項(xiàng)目http://jakarta.apache.org/commons/digester/ 試圖以通用的方式實(shí)現(xiàn)解析規(guī)則與xml數(shù)據(jù)文件的結(jié)合,但其目前所完成的功能仍然是原始的,不完備的。
在witrix平臺(tái)中,借助于tpl模板語言,我們以一種精致的方式突破了這一傳統(tǒng)障礙,使得配置文件不僅是自說明的,而且可以在不需要特制解釋器的情況下按照統(tǒng)一的tpl語言規(guī)則自動(dòng)運(yùn)行。例如:
<config>
<potlet id="a">
<view>
<portlet:iframe src="x.jsp" />
</view>
</portlet>
<portlet id="b">
<view>
<web:jsplet objectName="MyObject" initEvent="query" />
</view>
</portlet>
</config>
在以上的配置文件中我們配置了第一個(gè)portlet以iframe的方式進(jìn)行展示,而第二個(gè)portlet以WebObject的方式通過jsplet框架進(jìn)行展示。這種配置文件是可以通過一個(gè)簡(jiǎn)單的配置工具進(jìn)行管理的,但是其中的view部分不僅僅是對(duì)配置數(shù)據(jù)的一種記錄,它還可以被直接送入到tpl模板引擎中運(yùn)行。在這種意義上說,tpl模板語言不僅僅是一種易于編寫(editable)的語言,它更是一種易于配置(configurable)的語言。