搞CMS这行虽不算长,也有5年了,写些废话也算是个备忘,这些小小的开发心得愿与诸位共享,有砖的可以拍砖,没砖的扔块石头过来我也不介意。
首先我想要说明的一点是,模板标签系统不仅是CMS的专利,在任何有前台显示需求的系统中,都可以看到类似的设计,比如论坛、OA、财务类软件等等。
通常意义下,模板承载着定义页面架构的功能,而标签则负责显示数据。这也就是大家常说的数据与样式分离。当然,不同的系统分离度并不一样,根据分离度就我就可以简单的对模板标签系统进行分类了。 1 原始数据类,此类系统基本没有模板或标签的概念,所有的模板样式及数据查询均在程序中定义完成,最后通过字符拼接进行输出。优点是速度快,功能强(实际上是功能最强的,因为它的模板就是编程语言自己),缺点是改动困难,任何一个小小的修改都需要进行程序上的变动,此类软件完全没有通用性,只适合进行单独项目的快速开发。 2 混合查询类,此类系统开始出现模板和标签的概念,但模板只有简单的框架定义功能,标签则混合在程序中定义完成,这类系统的优点是开发快速,有一定的通用性,但是修改标签非常麻烦,且为了满足不同行业用户的各种个性化要求,需要开发者预制很多的标签在系统中,才能满足需求,动易1.X-6.X系列软件均采取的是此种架构。 3 模板至上类,此类系统以PHP平台下居多,模板的功能强大,几乎所有的查询都可以在模板中直接定义而来,同时在模板中还提供逻辑类标签。循环,判断,跳转等逻辑语句均在模板中由专用标签直接构造。此类系统优点是功能强大,有很好的通用性,用户进行个性化定制很容易。缺点是样式与数据分离依旧不够完美,由于在模板中直接进行数据查询和逻辑判断,所以无法有效的分离数据与样式,造成标签复用困难。此类系统的典型代表就是DEDE CMS中所使用的解析引擎。 4 绝对分离类,模板中定义样式,标签中查询数据,粗看之下似乎与类型1无甚分别,但是此类引擎实现了彻底的逻辑与呈现的分离。所有模板样式的定义及数据查询均不接触程序代码本身,用户在后台即可远程自行定义完成。而且由于模板和标签的高分离度,实现了标签的复用,节约了大量的重复开发时间。动易SF即为此类系统的典型代表。
动力1.X - 3.X时代,系统使用的是上面所说的第二类模板形式。模板是独立的系统,但标签混合在编程语言内,系统预制了所有需要的标签,调用方便,但是修改标签就必须进行程序代码的改变。 powereasy 5.x版本中,小弟开始推行一系列的技术实验,也就是后来的自定义动态标签系统。是针对动易模板标签系统的第一次变革,虽然不太完美,但有效的解决了SW系列一直缺乏足够*的自定义样式效果的弱点。说到这里不得不提的是科讯这个系统,几年它来通过对动态自定义标签的抄袭和扩展,目前在功能上已经超越了SW系列,但是骨子里还是动易的这一套,并没有什么其他突破。 到了SiteFactory开始立项后,动易整体转入.NET平台进行开发,而这个平台强大的多数据处理能力造就了SF现在所采用的XML+XSLT形式的模板标签引擎,通过有效结合正则捕获与XML格式转换,SF的模板引擎在强大和容错这两方面都有一定的突破,既保留了XSLT的灵活性,又绕开了XSLT繁琐严格的错误机制,使得一般错误不会导致整个模板引擎崩溃。同时在模板中还保留了一部分逻辑标签。使得最终用户可以根据实际情况*选择把样式定义在标签中,或者是定义在模板里。另外,这个称为Xpower的模板标签系统还具备非常强悍的可扩展性,用户可以任意扩展标签方法,只要C#做得到,Xpower就做得到,完全没有任何的限制。
第一阶段,标签标准化,数据标准化,在SF中,通过运用XML,XSLT技术已经基本实现。 第二阶段,标签实现跨平台,多引擎发展,标签的表面样式不变,内部可以用XSLT,也可以用PHP下的smarty之类的模板引擎进行解析。 第三阶段,鼓励并联合其他平台下的CMS系统通过标准方式使用SF标签,比如动易与帝国CMS的混合应用,通过简单加挂由动易提供的函数库,在帝国CMS的系统模板里引入SF标签后,也可以解析出需要的结果。 第四阶段,内容至上的阶段,标签的数据来源和组织方式的进一步扩展,不仅仅是站内的,而是全互联网的。技术开发此时应该退居幕后了,如何让标签成为一个万能的网络窗口才是最重要的,可以通过建立标签供应站的方式,建设一个类似GOOGLE API的站点,里面提供各类普通站长难以自行设计,自行维护的数据标签,比如天气预报标签,广告投放标签等,以标签云的方式向全网络提供各种标签,并鼓励个人和开发团体建立这种站点,联合全互联网的力量进行开发,而标签的提供者可以通过嵌入广告或者嵌入其他有偿数据的方式进行盈利,尽所有可能和各方力量来统一CMS类系统所使用的标签格式(这里指的是标签的XML定义格式),并建立业界标准。有了标准就有了力量,统一格式对CMS这个行业来说不是问题而是机会,只有全行业联合起来,才会引来更多方面的关注和商机。
时间有限,这次就简单的谈到这里,下次有时间我会做个模型演示一下跨平台的标签解析,很有意思的功能哟。 |