由淺入深:自己動(dòng)手開發(fā)模板引擎——解釋型模板引擎(三)
解釋型模板引擎與置換型模板引擎最大的區(qū)別是它支持流程控制語句,其次是支持對(duì)象訪問(反射實(shí)現(xiàn))。今天我們的任務(wù)是設(shè)計(jì)模板語法,給我們的后續(xù)開發(fā)提供依據(jù)。
模板語法類型
- 模板標(biāo)記;
- 模板指令;
- 注釋性指令;
- 語句型指令;
- 條件語句;
- 遍歷語句;
模板語法設(shè)計(jì)
- 模板標(biāo)記:
- {title};
- {item.Name};
- {item.GetSize()};
- {item.GetObject("string", false, 0, 0.12, DateTime.Now)};
- 模板指令:
- 注釋性指令:
- <!--#include file="../public_header.shtml" -->,用于引入包含文檔;
- 語句型指令:
- <m:using css="../styles/common.css" combin="true" compress="false" />,為HTML量身定制,用于引入CSS文檔,這個(gè)可以滿足CSS文件拆分、合并、壓縮等需要;
- <m:using js="../styles/common.css" combin="true" compress="false" />,為HTML量身定制,用于引入JS文檔;
- <m:var name="age" value="30" />,理解為"30";
- <m:var name="age" value="{30}" />,理解為數(shù)字30;
- <m:var name="age" value="{DateTime.Now}" />;
- 條件語句:
- <m:if test="">...</m:if>;
- <m:else />;
- <m:elseif test="" />;
- 遍歷語句:
- <m:for from="0" to="10" index="i">...</m:for>
- <m:foreach var="item" collection="items" index="i">...</m:foreach>
總結(jié)
本節(jié)課沒有任何實(shí)戰(zhàn)性內(nèi)容,只是總結(jié)了一下幾天來我們完成的一些語法設(shè)計(jì)。這樣的語法其實(shí)很好理解,SGML格式的。只不過解析起來就沒有那么爽了!在構(gòu)建解析過程的時(shí)候我自己都覺得非常痛苦,一不小心就會(huì)搞錯(cuò),甚至不知道錯(cuò)在哪里了!
后續(xù)課程有兩種方式展現(xiàn)給大家,一種是我直接帖出代碼實(shí)現(xiàn),一種是按照如上整理的內(nèi)容拆解成章節(jié)一一詳述。由于我拿不定注意,第一種方案怕大家學(xué)不到東西,第二種方案太慢。所以做個(gè)調(diào)查:持續(xù)關(guān)注本系列博文的同學(xué)請(qǐng)?jiān)谠u(píng)論里回復(fù)支持哪一種寫作方案。
浙公網(wǎng)安備 33010602011771號(hào)