今天在论坛上看到网友对动易SiteFactory模板标签的技术再次大加评论,但基本上用户限于见识和技术水平以及思维高度,只能做一些最粗浅的表面认识的评价,有感于此,我觉得有必要再次向大家说一说动易SiteFactory的模板标签的设计思想。更多关于动易模板标签的文章,可以参见技术中心和动易官方博客。
动易SiteFactory中用的模板引擎技术我们称之为XPower模板解析引擎,与其他CMS的模板解析引擎(如PHP下著名的Smarty模板引擎)存在着一些不同之处,那就是:
1、一般的模板解析引擎都是在模板页面中进行各种流程控制(顺序结构、分支结构、循环结构等),而动易的XPower模板引擎则是将这些都放在标签内部进行。
2、一般模板解析引擎采用的是自己的一套语法,动易采用的是国际标准的XSLT规范。
动易为什么要开发这样一套与众不同的模板解析引擎呢?
动易的模板标签技术体系是基于如下模板设计制作流程来设计的:专业的网页效果图设计师(需要有较高的美学素养,对构图、色彩、透视有较高水平,同时熟悉Photoshop等常用软件,并不要求熟悉DW等网页制作工具和JS、p+CSS等技术)负责设计网页效果图,然后交给专业的网页输出工程师(又称前端工程师,要求非常熟悉PhotoShop、DW等常用软件和JS、p+CSS等技术)做切片输出成HTML(一般要求输出成p+CSS格式,并且要求做到多浏览器兼容),再由技术员(可以是网页输出工程师,也可以是其他专门负责这项工作的工程师,要求各方面知识都懂一些,熟悉动易的标签及其效果)负责将模板效果中需要动态展示的部分调用标签并设置标签的参数,90%的列表效果应该通过修改标签的参数即可实现,如果遇到特殊的动易SiteFactory本身没有提供的标签效果,则由开发人员专门再额外提供定制的标签。
目前动易公司内部的模板制作正是按照这个流程来运转的。这个流程是动易根据6年多来的模板设计经验,综合考虑各种因素(如人才的培养、能力的阶梯等),优化总结出来的,可能并不适用于一些只有一两个技术员的小小小公司。这些小公司只有一两个技术员,根本没有办法区分设计师和程序员的职责,。公司创业初期,往往是这样的情况,但公司总是会向前发展的,等公司稍微发展壮大一些,一般就会有专门的设计师。这样就会基本与动易现在的模板设计制作流程保持一致了。
在这个流程中,每个环节都是由专业的人才来完成,要求每个人在自己的专业上要比较精通,在其他方面并不做过高要求,大家密切配合完成模板设计制作工作。这样对于公司来说,招聘人才和培养人才会相对容易得多(人多了,管理上的难度当然会提高,这就需要公司有一个好的人才管理机制,所幸动易现在的人才管理机制还是比较好的)。如果要求一个设计师又要会专业的页面设计(效果图设计),又要会输出成HTML(现在一般要求输出成p+CSS),会写JS,还要再懂SQL,会编程,这样的人才一则太难找,二则就算就算有这样的人才,但他基本上也都是懂而不精,属于万精油似的人才。设计师会懂一点编程,懂一点SQL,他写出来的SQL查询语句也基本上是没有优化过的,存在着性能问题,数据量一大,这样的标签就很可能影响着整个系统的性能,所以标签绝对不应该是让设计师来写的。而且,就算是设计师,都很难要求他在页面效果图设计和页面输出两方面都非常厉害,从动易的招聘经验来看,这样的设计师都很难找。动易的20多个设计师除了几个能力非常强的设计主管外,其他人就是分两块职能的,一部分设计师侧重页面设计(效果图设计),一部分侧重页面输出,再互相学习,共同提高。
基于这个模板设计制作流程,动易的架构师设计了目前这套XPower模板解析引擎,XPower模板解析引擎相对其他模板引擎技术,优点有以下几点:
1、其他引擎技术无一都要求设计师额外再学习模板引擎的语法,让设计师再充当程序员,对设计师的能力要求太高。这就回到了我前面所讲的问题。动易现在的模板和标签在不重新开发标签的情况下,可以说是同类软件中最易用的,设计师只要做好自己的专业工作,再熟悉一下标签的输出效果,在模板中套用一下标签即可,标签的内部原理可以不知道。开发标签的工作完全可以交给程序员来完成。
2、其他引擎技术都是自己的专用语法,而不是国际标准。动易XPower模板解析引擎采用的XSLT则是将XML转换成HTML的国际标准技术规范,这并不是冷门技术,而是目前非常热门的技术。具体情况有兴趣的自己去google查。对于一个技术员来说,学好了XSLT技术,去哪里都可以通用,而学这些专用模板引擎技术,只能对这一套系统使用。谁的应用范围更广,明眼人一看就知。
3、其他引擎技术做的模板中,标签几乎不能重用。比如,要想在所有模板页面中实现同一个列表效果,我们需要在每个模板页面都要写一套同样的代码,一旦要想改一下效果,所有页面都要重新改一下,工作量之大可想而知。动易XPower模板解析引擎则只需要你调用同一个标签即可,甚至在不同的页面想要不同的效果,也可以用同一个标签改一下调用参数来实现(当然这样的标签的内部代码就会复杂得多,但这正是程序员应该做的事,代码复用正是程序员一直追求的。)
4、动易XPower模板解析引擎内置了许多共用函数,这些类似于其他模板引擎技术中的公用“标签。基本上其他模板引擎技术中的东西都能在XPower模板解析引擎中找到类似的功能。
5、动易官方提供了丰富的各类标签,并为每个标签提供了详尽的使用文档(见技术中心),这些标签的灵活运用,可以满足90%以上的各类需求,绝大部分网站的模板制作任务只需要要设计师套用一下标签即可,可大大减轻设计师的工作量。如果有兴趣,也可以认真去学一下标签制作技术。