Javascript Library 雜談

Saturday, June 3, 2006

(因為沒有什麼要點,所以又是雜談)

近年來 Javascript 因為 Ajax 而又再次備受注目,有人開發出不同形式的 Javascript library/framework 來加快開發的速度,用簡單的碼寫出複雜的 UI。對我來說,一個 framework/library 最好可以:

  • 調解不同瀏覽器之間的差別,使開發者可以使用統一的 API 來寫程式,如 event listener
  • 用不同的 helper utilities 來補足 Javascript 的不足,如 collections, validation
  • 簡化過去的複雜 UI 寫法,如 fade in/out, drag and drop 等等
  • 提供一些常用的 widget,如 date selector, datagrid
  • 各個不同的模組可以分開來使用,不用一次過載入大體積的檔案

而在網上,幾個令我注目的 Javascript library/framework:

(一) 基本型

  • Prototype – 提供很多在寫程式上很便利的功能,得到不少開發者支持,也有不少教學文章,他衍生出其他 的 library 如 script.aculo.us、Rico 等等。
  • jQuery – 像 Prototype 般提供 dom, event, animation 等等。其最強的是可配用 css selector/xpath 來選取 dom 物件,而且方法間還是 chainable (所以是 Query) ,可用簡單一句做出本來幾十行才做到的複雜事。還有是它只有十多 KB 的大小,實在是小巧實用。雖然還是蠻年幼的 library,但期待日後會更有發展。

(二) 豐富型

  • Dojo toolkit – 內容最豐富的 library,除了一些 basic ajax 外,還有不同的 data structures, widgets, math, crypto 等等。其中最注目的當然是 dojo.storage,可以在 client side 存放比較大量的資料了。其 packaging 方法讓你可以做到一般程式的 import 效果,可以用到先加入。可是到現時為止,教學文件還是缺缺的,有瞎子摸象的感覺。
  • Yahoo! UI – 一套很不錯而且完善的 library set,其 Event library 有很好的 wrapping,如 automatic scope correction, event object browser abstraction 等等,解決了令開發者很煩惱的問題。當然還包括了 dom, animation, connection manager 等等。最驚喜的 (但也不關 javascript 事) 是它還包括了 CSS library,用一個蠻有系統的方法,去做 CSS Layout。有詳細的說明文件和例子,很易上手。

有那麼多的 framework/library ,各自有不同的用戶群,實在令人眼花撩亂,很難取捨。而這些 framework/library 都是 client side 的,他們會如何與 server side 的技術結合也將是關鍵。

2005 網絡技術回顧

Friday, December 30, 2005

又再來一個回顧了。在這一年,有三項令我比較注目的技術名詞 :Ajax, Ruby on Rails, Web 2.0,三者又互有關係。

GMailGoogle Maps 面世,大家都對 Ajax 有了很大興趣,結果在今年有很多不同的 Ajax library 出世,如 Prototype , Dojo 等等,也研究出很多做 Ajax 的方法,好處壞處等等。人們也開始希望使用 Ajax 創造出更加 Desktop-like 的 Web Application,所以連帶一些特效 library 如 script.aculo.us 也紅起來了。在 Server-side, MS 有 ASP.NET 的支持,Java 有很多library 如 DWR ,而新的 Ruby on Rails 本身已有 Native 的 Ajax Support 了。下一年的 Ajax 技術將會更加成熟。

Ruby on Rails 是一個 Fast Development 的 Web Framework,幫你做了很多東西,讓開發者可以專注於 Business Layer。 Convention over Configuration 、Code generation 工具等等使開發速度加快了很多。而使用的語言 Ruby 也是非常簡潔有力,受到開發者的歡迎。配合 Active Records 使存取 Database record 更 OO 更方便。有很多 Web 2.0 的服務,也使用了 Ruby on Rails 作為開發的 Framework。不過,始終 Ruby on Rails 還是相當新的玩意兒,到廣範應用還是有很遠的路要走。首先要解決的,還是 i18N 的問題。

Web 2.0 本來只是一個頗為技術性的名詞,但在這一年越來越得到廣泛談論。隨著 Wiki, Blog, RSS, Tagging, Social Network 等東西的興起,我們已走入 Web 2.0 的時候,甚至連消費性質的電腦雜誌也大字標題地介紹了。其實對於用戶來說, Web 是什麼版本並不重要,也無關係。用戶只管使用這些網絡服務就好了,而且會網絡越來越方便,越來越好用,越來越與生活連上關係。現在的互聯網,在泡沫過後,才是真正的黃金時期。而對於互聯網公司和開發者來說,了解並掌握 Web 2.0 的特質,是最重要的事情。

下一年,網絡將必更加精彩~

化身萬千的瀏覽器

Friday, September 2, 2005

www

早前看過一個叫 Ajax Office 的東西,光看名字就有意思了: Ajax 是這年內最響噹噹的一個字,講的是用 Remote Scripting 去做網絡程式, GmailGoogle Map 就是其表表者; Office 當然就是指我們常用的文書處理工具。去到 Ajax Office 的頁面並沒有什麼特別的東西,只有一些字和一些連結,最搶眼的一句是:AJAX OFFICE is to Microsoft Office what GMail (Google Mail) is to Microsoft OutLook。

Ajax Office 雖然是一個 SourceForge 的 Project ,但其實只是提出了一個理念,沒有什麼實際的東西正真可用。然而,在 GMail 推出之後,已有很多蠢蠢欲動的計劃,要為大家去做 To-Do List , Calendar, Contact, Word Processing, SpreadSheet, Presentation 等等。如 Ajax Office 的概念,就有 GOfficeWritely 這些服務了。

由 Web 1.0 的「讀」年代,我們現在變成 Web 2.0 的「讀寫」模式。我們的瀏覽器,再也不只是用來瀏覽,一時變身電郵客戶,一時變工作計劃軟件,一時變作寫記本,身份百變。

不過,當初設計的 HTML 在功能上並沒有考慮「寫」這一方面,所以在一些表單的功能都是很簡單的,這也是考慮到 Request-Response 模式上並不會做到很複雜,所以也沒有將桌面軟件的豐富元件帶到 HTML 了。現在我們看到的網絡上的各種多元化的豐富控制,都是靠大量的 DOM Scripting 和 Ajax 去創造,例如一些已可用的 Calendar 元件、 Rich Text Editor 等等。

Web 進入 2.0 時代,但並沒有靠/等下一代的 HTML 來到,反而是 Ajax 成了突破的重點,靠 Javascript 此一技術突破,並不受到瀏覽器的支援度所限,發展得如日中天。

盡力模仿桌面軟件,故之然能讓用戶在熟悉的環境之下工作,但網絡軟件也更應該抓實 Web 2.0 的特點。因為軟件在網上運作,自然可以延伸到用戶和社群的方面,可加入不少社會性的特點,讓用戶之間交流。

雖然由 Ajax 技術所衍生出來的網絡服務如雨後春荀,但是沒有一個真正說得上如 Gmail 般是 Killer App。對我來說,這些服務雖然都很好,但分得實在太散,登記多一個服務,等於要記多一個網址和 Login。而且,服務之間沒有互通性,這邊做了一個 to-do list,並不能在另一邊的 Calendar 看到。因此,這些網絡軟件之間如果也有協作性就很不錯了。想想一套 Office 是一套整體的,當中各個不同的軟件互相可通格式,互相協作才可以更有利於用戶有效地使用。要各個網絡軟件可以互相溝通,當然就是依靠標準的訂立了,否則只會各自為政,苦了用戶。

AJAX 豐富用戶端

Tuesday, April 26, 2005

Isomorphic SoftwareSmart Client 運用了 AJAX 的技術,實現了一些類似於 Laszlo 的網絡應用程式。兩者共通之處,都是用 XML 檔來建做一個 Rich Client 的環境,一個用 Flash 一個用 Javascript。 Laszlo 的環境因為是 Flash 的關係,所以比較美觀。不過在實用性上,兩者其實差不多,開發上也是很簡單。

可惜的是,兩者在速度方面實在不太好,主要的負載在 Client Side 必須有足夠快的電腦,才可以載起這些 Rich Client 的 Core Engine。 而另一方面,因為與 Server 互動地方有很多,有很多的 Mini-request 發出去了,如果 Server 不夠快就會有遲緩感。這種遲緩感,換了平常的網絡程式,反而沒有問題,但因為這些 Rich Client 的用戶介面, 與我們平時常用的桌面程式太相似,在使用印象上重疊,因而會有與桌面程式一樣般快和有反應的期望 ,所以速度不達便感到累贅。

雖然如此,但大家對於這些功能上比較豐富的用戶端還是充滿興趣,至少發開者是如此。自從 GoogleAJAX 應用在其不同的服務上,帶來了新鮮的用戶體驗,就更引起大家的興趣。比起 Flash , AJAX 的優勢在於可以與舊有的技術互相融合,我可以為程式逐點加上 AJAX 的改進用戶體驗,而不用將整個程式重寫成 Flash 版本。今年, AJAX 的應用如雨後春筍,我相信還陸續有來!

Ajax 工具 (PHP版本)

Monday, March 7, 2005

SAJAX – Simple Ajax Toolkit 是一個簡單的 PHP 用的 Ajax 工具,只要寫好要用的 function,就可以直接在 Javascript 中用 x_function 用 XMLHttpRequest 來叫喚 PHP 的程式,因為本身已經產生了XMLHttpRequest 的物件,所以在使用上跟使用普通的 Javascript function 一樣,簡單易用。計劃會有 ASP, Perl, Python, Ruby, Io 的版本…. 沒有 Java 呢….

相關連結: Sajax – Simple Ajax Toolkit