官术网_书友最值得收藏!

1.4 JavaScript熱潮再起

近兩年,以Web 2.0為代表的特別重視用戶體驗的Web應用開始流行起來,特別是Ajax的出現,為創建擁有良好用戶體驗與高性能兼備的Web用戶界面(User Interface,簡稱UI)提供了更多的可能,甚至,要創建出與桌面程序交互界面完全媲美的Web應用交互界面也變得方便容易起來。而在這其中,JavaScript發揮了重要的作用。JavaScript迎來了其發展的最重要的一個時期,主要原因有以下兩個方面:

第一,B/S(Browser/Server)時代,極力提倡瘦客戶端與零客戶端概念,將應用功能全部集中在服務器端,由服務器端技術去實現;而在客戶端只需要使用瀏覽器,不需要安裝任何其他軟件,并且客戶端瀏覽器基本上也只是一個顯示信息的區域和接收輸入的表單,不處理任何業務邏輯。

這種架構顯然有其優點:高度集中,易于維護,并且服務器端可以由多種技術實現,不需要安裝客戶端,界面可以做得如網頁一樣的漂亮;但是這種架構也有其顯然的缺點:運算高度集中,資源要求高度集中,容易形成瓶頸,客戶端控制能力差,用戶交互體驗不好。

為了解決Web時代面臨的問題,首先需要將運算與資源在服務器端與客戶端合理分攤,將部分業務邏輯處理交給客戶端。這也有其現實的理由,那就是相比于幾年前,現在的客戶端的處理能力已經大大加強,并且資源利用率不高,所以將部分業務邏輯分攤給客戶端在硬件上也是有保證的。其次,要加強用戶界面交互性,特別是要借鑒桌面程序用戶界面的優點,如后臺異步請求、窗口部分刷新等特點,將這些特性引入到B/S的用戶界面設計中。畢竟,電腦用戶基本上都非常熟悉Windows桌面軟件操作,如果我們的B/S的用戶界面能做到與Windows桌面軟件操作一致的話,用戶將會很容易掌握我們的系統。

要達到以上的目的,就現在看來,只有JavaScript才是最合適的技術,因為JavaScript是唯一一個主流瀏覽器都支持的客戶端腳本語言。這一點很重要,因為這樣用JavaScript實現的功能不再需要安裝其他第三方插件,并且JavaScript具有業務處理的運算能力,也有對用戶界面的控制能力,如操作BOM與DOM(后面章節將有專門介紹)。這些都是JavaScript在Web時代將會取得巨大發展的現實基礎。

第二,Ajax的出現,為創建與開發大型的JavaScript項目提供了可能。在Ajax出現與成熟以前,JavaScript在一些大型的軟件項目中永遠只能是配角,只能出現在表單驗證、一些客戶端UI組件的生成等非主流應用中,而業務邏輯與數據處理永遠都是服務器技術的專利。

Ajax的出現改變了這種情況,它第一次將數據處理能力帶給了JavaScript,我們可以通過Ajax訪問遠程數據庫(當然,這中間還需要一層服務器端代理),然后將數據直接抓到JavaScript中進行處理,這就解決了以前建立大型JavaScript項目的最關鍵問題之一。另外,Ajax提供了后臺異步請求資源的能力,因為不再需要通過刷新頁面獲取服務器數據,并且可以通過DOM技術來實現頁面的局部刷新,這樣就提供了Windows桌面程序的數據刷新能力。這一切都為利用JavaScript實現大型項目提供了契機。

而實際上,以Google為代表的國際大公司已經在用JavaScript來建立自己的核心產品了,如讓人驚訝不已的Google Map等,如圖1-3所示(部分截圖)。

圖1-3 Google公司的Google Map(部分截圖)

在國內,使用Ajax,也就是利用JavaScript來建立自己的軟件項目與產品的公司也越來越多,如圖1-4所示的就是用JavaScript實現的圖形流程設計工具。

圖1-4 利用JavaScript實現的圖形流程設計工具

該套工具完全仿照Windows中類似軟件工具的界面形式與操作方式開發,從圖形設計的操作習慣與屬性編輯器的使用上都盡量與Windows中的類似軟件靠齊。由于筆者主持了該套工具的開發,從筆者的感受來說,利用JavaScript實現類似軟件的可行性還是非常之高,雖然在某些方面不如Windows平臺上的開發工具方便,如組件與圖形處理能力;但是JavaScript的這種開發能力還是非常讓人值得期待,因為利用JavaScript開發這種基于Web上的軟件有著其顯然的優勢:不需要安裝,分發方便,易于與B/S架構軟件集成等。筆者相信,今后會有越來越多的公司將其項目與軟件產品利用JavaScript來實現,由此帶動對JavaScript高級開發人員的巨大需求。

現在,不管是服務器端還是客戶端技術都離不開JavaScript。隨著服務器端技術熱潮的漸漸遠去,客戶端技術的熱潮即將到來,而在這個熱潮中,JavaScript將成為當仁不讓的主角!

主站蜘蛛池模板: 兴安县| 九台市| 鞍山市| 沈阳市| 桦川县| 阿拉善左旗| 西安市| 当雄县| 江永县| 合江县| 闸北区| 鸡东县| 乌兰县| 定安县| 山东省| 固原市| 滨州市| 银川市| 绩溪县| 平泉县| 清新县| 鸡东县| 永川市| 库伦旗| 枞阳县| 海盐县| 夏津县| 英吉沙县| 曲靖市| 兰溪市| 洞头县| 黄平县| 嘉义市| 迁西县| 大庆市| 襄垣县| 兴城市| 勃利县| 太仆寺旗| 黔东| 吴忠市|