博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
由浅入深:自己动手开发模板引擎——解释型模板引擎(三)
阅读量:4597 次
发布时间:2019-06-09

本文共 1181 字,大约阅读时间需要 3 分钟。

解释型模板引擎与置换型模板引擎最大的区别是它支持流程控制语句,其次是支持对象访问(反射实现)。今天我们的任务是设计模板语法,给我们的后续开发提供依据。

模板语法类型

  1. 模板标记;
  2. 模板指令;
    1. 注释性指令;
    2. 语句型指令;
  3. 条件语句;
  4. 遍历语句;

模板语法设计

  1. 模板标记:
    • {title};
    • {item.Name};
    • {item.GetSize()};
    • {item.GetObject("string", false, 0, 0.12, DateTime.Now)};
  2. 模板指令:
    1. 注释性指令:
  • <!--#include file="../public_header.shtml" -->,用于引入包含文档;
语句型指令:
  • <m:using css="../styles/common.css" combin="true" compress="false" />,为HTML量身定制,用于引入CSS文档,这个可以满足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}" />,理解为数字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>

总结

本节课没有任何实战性内容,只是总结了一下几天来我们完成的一些语法设计。这样的语法其实很好理解,SGML格式的。只不过解析起来就没有那么爽了!在构建解析过程的时候我自己都觉得非常痛苦,一不小心就会搞错,甚至不知道错在哪里了!

后续课程有两种方式展现给大家,一种是我直接帖出代码实现,一种是按照如上整理的内容拆解成章节一一详述。由于我拿不定注意,第一种方案怕大家学不到东西,第二种方案太慢。所以做个调查:持续关注本系列博文的同学请在评论里回复支持哪一种写作方案。

 

转载于:https://www.cnblogs.com/ymind/archive/2012/04/19/progressively-develop-templateEngine-yourself-Interpreted-type-3.html

你可能感兴趣的文章
搜索评价指标——NDCG
查看>>
浅复制与深复制
查看>>
codeReview
查看>>
内存泄漏 tensorflow
查看>>
javascript 体验倒计时:距离国庆还有多长时间
查看>>
centos 7 修改ssh登录端口
查看>>
wraps
查看>>
11、深入理解计算机系统笔记:存储器层次结构,利用局部性
查看>>
小白整理一下PHP常用字符串函数
查看>>
一千行mysql笔记
查看>>
排查Java高CPU占用原因
查看>>
[iOS]数据库第三方框架FMDB详细讲解
查看>>
让IE6/IE7/IE8浏览器支持CSS3属性
查看>>
Windows 某些软件显示"口口"解决办法
查看>>
PHP+Hadoop+Hive+Thrift+Mysql实现数据统计分析
查看>>
和同事下班路上讨论心得(服务器部署的几点问题)
查看>>
Spring学习总结五——SpringIOC容器五
查看>>
解决多个ajax页面请求,页面loading阻塞问题
查看>>
Executor
查看>>
Javascript 表单验证对象控件 + ajax简单验证重复项与ajax提交数据
查看>>