博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

小泥鳅解剖系列之模板机制

Posted on 2011-03-14 10:37  gczhao  阅读(266)  评论(0编辑  收藏  举报

 本文转自:http://www.cnblogs.com/wei/

 

 

为了给小泥鳅实现一套好的模板机制,曾经花了大量时间来分析目前互联网上的成熟,流行的通用程序,包括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>

 

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

 

附:

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


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

 

QQ群:12018034