[转载]小泥鳅解剖系列之模板机制

[转载]小泥鳅解剖系列之模板机制 – 小泥鳅博客技术交流区 – 博客园.

为了给小泥鳅实现一套好的模板机制,曾经花了大量时间来分析目前互联网上的成熟,流行的通用程序,包括blog,cms,shop,bbs/.net,php,asp等,总结下来主要有以下几种:

1、CSS

通过加载不同的CSS文件来实现不同的展现效果。

相信熟悉CSS的话,便知CSS的强大,ASP.NET的默认主题基于此实现

优点:维护方便,速度快

缺点:2/8原则,可以实现大部分功能,灵活性不够

2、模板引擎

通过加载不同的模板文件(模板文件内容可不同),使用模板引擎自己的语言机制动态替换数据,来实现不同的展现效果。

优点:灵活,可实现绝大部分需求

缺点:影响性能,需要引入第三方模板引擎(当然可以自己开发),增加复杂度。

3、.ascx用户控件,母版页.Net平台独有

通过加载不同的.ascx用户控件来实现不同的展现效果。当然也可以动态加载. master母版页。

原理和使用第三方模板引擎类似。

优点:可使用.net语言,比模板引擎更灵活,可实现任何需求

缺点:通过反射机制影响性能(据说,未验证),.net特征偏多,对美工不友好

4、生成.aspx文件

需要使用一次模板引擎生成.aspx文件,利用URL重写加载不同的.aspx文件,运用时与模板引擎和模板文件无关。

优点:灵活,速度快

缺点:维护相对麻烦,修改模板后需要重新生成.aspx文件, 加入第三方模板引擎,增加复杂度。

5,xml+xslt

名词解释:XSL 指扩展样式表语言(EXtensible Stylesheet Language),XSLT 指XSL 转换

设计思想跟模板引擎一样,不过xslt是通用标准

优点:标准,跨平台,跨语言

缺点:不够灵活,容易出错, 对美工来说,偏复杂

问题来了,哪种更合适小泥鳅的呢?受Community Server,BlogEngine.NET等国外程序的影响,老农开始选择了第3种,通过动态加载不同用户控件的方式来实现模板机制,功能很给力,并且 在相当长的内部开发阶段使用了这种方式(胎死腹中),同时也是在这个阶段,在与其它职业的同事,朋友交流中,慢慢觉得这可能不是一种最合适的方式(实践出 真知),对于广大普通用户,特别是主题设计者,太多的.net特性会让他们看花了眼。

小泥鳅的定位一个成熟,通用,面向所有人群的博客程序,最后把焦点放在了模板引擎上,

现在.net平台的主要模板引擎有Nvelocity, StringTemplate等,经过多方面的测试,评估,最终选择了NVelocity,当然不排除今后有能力,有时间自己造轮子。

NVelocity源自Java,历史悠久,语法优雅,减少了重复学习的成本

如以下代码用于输出最新日志(简单就是美):

1 <div id="recentposts" class="widget">
2 <h3>最新日志</h3>
3 <ul>
4 #foreach($item in ${recentposts})
5 <li>${item.link}</li>
6 #end
7 </ul>
8 </div>

根据发布以来的反馈统计,效果还不错,大家也来做皮吧 ^_^

附:

源码下载:http://files.cnblogs.com/wei/Loachs_1.2_src.rar

官方网站http://www.loachs.com/

QQ群:12018034

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏