共计 1889 个字符,预计需要花费 5 分钟才能阅读完成。
Web 开发一直是一个比较纠结的技术领域,为啥这么讲?你看:
如果我是一个前端开发工程师,意味着我至少需要熟练掌握 3 种编程语言:HTML,CSS 和 Javascript。这还是基于前后端分离的开发场景,如果是使用传统的 MVC 框架的话,则那些“全栈”工程师们还需要掌握服务器端的编程语言,例如 Java,Python 或者 Ruby 等。
基于这样一种复杂组合的前提,技术界又衍生出了各种各样的“框架”来试图增强复用性以提升开发效率 & 规范团队的编码风格。例如传统的 MVC 框架就有无数种:基于 Java 的 SSH(实际上是 3 中框架的搭配)、基于 Python 的 Django、基于 PHP 的 Yii、基于 Ruby 的 Rails 等等等等……(你会发现上述框架都是基于服务器端语言的)然后,由于 Javascript 语言的设计实在是比较草率,所以出现了各种框架来进行改善(prototype, extjs, jquery, vue.js, react.js 等等);与此同时,CSS 的框架也层出不穷(Bootstrap,boolma……)
上述现象,一方面体现了 Web 开发技术领域的生机勃勃;而另一方面,从程序员角度来看(程序员也是一种用户哈),一致性体验严重不足!
在上古时期,曾经有一种开发技术在开发的一致性体验上有着明显由于同类产品的设计 & 同时也拥有非常高的开发效率(亲测体会,我曾经用了一个周末的时间,快速开发了一款公司内部使用的项目周报管理系统 ;-P),这种技术的名字叫 Coldfusion。
Coldfusion 其实是一款 Web 服务器软件产品的名称,他使用的前端开发语言名字叫 CFML。其典型特点是:语法很简单,与 HTML 一样,使用一些标记实现特别的功能。这些标记也和 HTML 一样,不过都是用 CF 开头的。例如 <CFMAIL>…</CFMAIL> <CFIF>…</CFIF> 等。现在的 JavaServer Page 里的 JSTL 显然是受到了他的启发。
一个小小的例子 Hello world:
<cfset Msg="Hello World">
<html>
<head>
<title>First ColdFusion Program</title>
</head>
<body>
<center>
<cfoutput><h1>#MSG#</h1></cfoutput>
</center>
</body>
</html>
Coldfusion 的功能非常强大,它本身所带的 30 多个例子几乎实现了以前用 CGI 实现的所有 WEB 应用。Coldfusion 也可以处理数据库。所以在 ASP 出现之前,Coldfusion 占据了 NT 上 WEB 数据库应用的市场。
你会发现,在早期的那个年代(CSS 还没有从 HTML 中完全剥离出来),其初步实现了前端编辑语言与服务器端语言开发的一致性体验。
实际上,在当时 Coldfusion 几乎是没有什么像样的竞争对手的。Coldfusion 出到 3.0 版本的时候,微软的 ASP(注意不是.net 平台)刚刚出来 1.0 版本。在那个时候 PHP 也是初出茅庐,而 Java 领域的开发人员们还在使用 Servlet 在服务器端拼写 HTML 字符串!
可惜的是,一种优秀的技术实现,被汹涌的商业竞争大潮所淹没了。
Coldfusion 产品分成两大部分 Coldfusion Studio(开发使用的 IDE)和 Coldfusion Server(服务器端),均是由 Allaire 公司开发出售。
需要说明的是 CFML 语言理论上不是绑定在 Coldfusion 产品上面的(事实上也的确有一些第三方的服务器产品支持 CFML),但是实际上在市场里面大家基本上就会认为 Coldfusion=CFML。
当时 Allaire 公司旗下还有另外一款更加闪光的产品:Homesite。“老年”的程序员可能还有印象,在当时 Homesite 和 Macromedia 公司的 Dreamweaver 以及微软公司的 Frontpage 并成为所见即所得 HTML 编辑器的“三剑客”。此外,Allaire 公司还有一款 Java 的服务器端产品 JRun 在当时也是大名鼎鼎。
2001 年,Macromedia 公司收购 Allaire 公司。从产品上带来了两个后果:
- Homesite 产品随之消失;
- Coldfusion 产品从 C ++ 移植到 Java 平台。
2005 年,Macromedia 公司被更大的巨头 Adobe 公司收购,在此后的 3 年,Coldfusion 逐渐淡出了人们的视野。
有时候,我们怀旧的时候,有可能会 YY 一下,在那个年代,开源的理念还没有深入人心,否则的话 CFML 的技术直接开放给开源社区的话,这项技术目前的生存状态还不一定是个什么样……