早在1999年后期,就已经开始为模板引擎写说明文档。在完成这个文档之后,开始尝试用C写一个模板引擎,并有希望被包含到PHP里去。在撞上了许多的技术难题的同时,“什么是模板应该做的,什么不该做”这个问题,也被热烈的讨论着。从这些经验决定应该用PHP将模板引擎写成一个类,让任何觉得合适的人使用它。所以就有了Smarty。(注:这个类以前从来没有公开发表过)。这个类几乎达到了我们所有的要求:常规变量替换,支持包括其他模板,使用配置文件集成设置,嵌入PHP代码,限制‘if’语句的作用,还有更多的可以多层嵌套的健壮的动态区块[13]。它用常规表达式做到这一切,于是代码变得相当令人费解。在每次调用的时候,都要去解析那些语法和常规表达式,于是在大型应用的时候,它显然慢了下来。在程序员的眼光看来,最大的问题还是使用PHP脚本建立和处理模板和动态区块的所有必要工作。我们应该如何使他变得更简单?
我们可以想象Smarty应该有怎样的最后表现。我们知道PHP代码如果没有了模板解析的开销将有多快,我们也知道从一般的美工看来PHP语言是多么的“恐怖”,然而这一切可以被一种更简单的模板语法掩饰掉。我们应该怎样把这两种方法的长处结合起来?
于是,Smarty诞生了…… Smarty的主要有点是:
① 速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。
② 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)
③ 缓存技术:Smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。
④ 插件技术:Smarty可以自定义插件。插件实际就是一些自定义的函数。
- 10 -
⑤ 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。
不适合使用Smarty的地方:
① 需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,这类型的程序使用smarty会使模板处理速度变慢。
② 小项目。小项目因为项目简单而美工与程序员兼于一人的项目,使用Smarty会在一定程度上丧失PHP开发迅速的优点。 4.2.4 HTML+CSS介绍
HTML(HyperText Mark-up Language),即超文本标记语言或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言。设计HTML语言的目的是为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便地联系在一起,形成有机的整体,人们不用考虑具体信息是在当前电脑上还是在网络的其它电脑上。我们只需使用鼠标在某一文档中点取一个图标,Internet就会马上转到与此图标相关的内容上去,而这些信息可能存放在网络的另一台电脑中。 HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容[14]。
另外,HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器。
HTML标签通常是英文词汇的全称(如块引用:blockquote)或缩略语(如“p”代表Paragraph),但它们的与一般文本有区别,因为它们放在单书名号里。故Paragragh标签是
,块引用标签是
。有些标签说明页面如何被格式化(例如,开始一个新段落),其他则说明这些词如何显示(使文字变粗)还有一些其他标签提供在页面上不显示的信息--例如标题。
- 11 -
关于标签,需要记住的是,它们是成双出现的。每当使用一个标签--如
,则必须以另一个标签将它关闭。注意“blockquote”前的斜杠,那就是关闭标签与打开标签的区别。但是也有一些标签例外。比如,标签就不需要。基本HTML页面以DOCTYPE开始,它声明文档的类型,且它之前不能有任何内容(包括换行符和空格),否则将使文档声明无效,接着是标签,以结束。在它们之间,整个页面有两部分--标题和正文。
标题词--夹在
和标签之间--这个词语在打开页面时出现在屏幕底部最小化的窗口。正文则夹在和之间--即所有页面的内容所在。页面上显示的任何东西都包含在这两个标签之中[15]。Cascading Style Sheets(层叠样式表),从九十年代初HTML被发明开始样式表就以各种形式出现了,不同的浏览器结合了它们各自的样式语言,读者可以使用这些样式语言来调节网页的显示方式。一开始样式表是给读者用的,最初的HTML版本只含有很少的显示属性,读者来决定网页应该怎样被显示。
但随着HTML的成长,为了满足设计师的要求,HTML获得了很多显示功能。随着这些功能的增加外来定义样式的语言越来越没有意义了。
1994年哈坤?利提出了CSS的最初建议。伯特?波斯(Bert Bos)当时正在设计一个叫做Argo的浏览器,他们决定一起合作设计CSS。
当时已经有过一些样式表语言的建议了,但CSS是第一个含有“层叠”的主意的。在CSS中,一个文件的样式可以从其它的样式表中继承下来。读者在有些地方可以使用他自己更喜欢的样式,在其他地方则继承,或“层叠”作者的样式。这种层叠的方式使作者和读者都可以灵活地加入自己的设计,混合各人的爱好。
哈坤于1994年在芝加哥的一次会议上第一次展示了CSS的建议,1995年他与波斯一起再次展示这个建议。当时W3C刚刚建立,W3C对CSS的发展很感兴趣,它为此组织了一次讨论会。哈坤、波斯和其他一些人(比如微软的托马斯?雷尔登)是这个项目的主要技术负责人。1996年底,CSS已经完成。1996年12月CSS要求的第一版本被出版。
- 12 -
1997年初,W3C内组织了专门管CSS的工作组,其负责人是克里斯?里雷。这个工作组开始讨论第一版中没有涉及到的问题,其结果是1998年5月出版的第二版要求。到2004年为止,第三版还未出版。
? 1996年W3C正式推出了CSS1。 ? 1998年W3C正式推出了CSS2。 ? CSS2.1是W3C现在正在推荐使用的。 ? CSS3现在还处于开发中。 4.2.5 Javascript介绍
JS是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。
JavaScript的正式名称是\。这个标准由ECMA组织发展和维护。ECMA-262是正式的JavaScript标准。这个标准基于JavaScript(Netscape)和Jscript(Microsoft)。Netscape(Navigator 2.0)的Brendan Eich发明了这门语言,从1996年开始,已经出现在所有的 Netscape和Microsoft浏览器中。ECMA-262的开发始于1996年,在1997年7月,ECMA会员大会采纳了它的首个版本。
在1998年,该标准成为了国际ISO标准(ISO/IEC 16262)。这个标准仍然处于发展之中。
在 2005年12月,ECMA发布ECMA-357标准(ISO/IEC 22537)出台,主要增加对扩展标记语言XML的有效支持。
能够具有交互性,能够包含更多活跃的元素,就有必要在网页中嵌入其它的技术。如:Javascript,VBScript,Document Object Model(DOM,文档对象模型)、Layers和 Cascading Style Sheets(CSS,层叠样式表),这里主要讲Javascript。那么Javascript是什么东东?
- 13 -
Javascript就是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。Javascript是由Netscape公司开发的一种脚本语言(scripting language),或者称为描述语言。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。 运行用Javascript编写的程序需要能支持Javascript语言的浏览器。Netscape公司Navigator 3.0以上版本的浏览器都能支持Javascript程序,微软公司Internet Explorer 3.0以上版本的浏览器基本上支持Javascript。微软公司还有自己开发的Javascript,称为JScript。Javascript和Jscript基本上是相同的,只是在一些细节上有出入。Javascript短小精悍,又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。同时它又是专门为制作Web网页而量身定做的一种简单的编程语言。
JavaScript使网页增加互动性。JavaScript使有规律地重复的HTML文段简化,减少下载时间。JavaScript能及时响应用户的操作,对提交表单做即时的检查,无需浪费时间交由CGI验证[16]。JavaScript的特点是无穷无尽的,只要你有创意。
- 14 -