上古開發神器之Coldfusion
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的技術直接開放給開源社群的話,這項技術目前的生存狀態還不一定是個什麼樣……