jQuery 會成為下一個 Adobe Flash 嗎?

相似點與不同點:

1、
都需要由插件運行。
jQuery 是翻譯成 JavaScript 的開源解釋器,ActionScript 在 Flash 內部運行且 Flash 非開源。

2、
都是非 ISO 標準,需要專門的開發途徑。
製作 Adobe Flash 需要花錢從 Adobe 買軟體。

求繼續補充……


jQuery 只不過是 JavaScript 上面的一個庫。jQuery 本身是無法達到和 Flash 相同的效果的;Flash 應該和 HTML5 對應,而 jQuery 應該和 ActionScript 的第三方庫對應。

===========

下面討論 HTML5 是否會成為下一個 Flash 的問題。

首先,從技術上,HTML5 和 Flash 已經可以做到幾乎等同的效果。而 Flash 大勢已去,所以在實現相同效果這一方面,HTML5 就是下一個 Flash。

其次,運行平台的問題。HTML 是一個標準,現在有很多種瀏覽器引擎來實現這一標準,效果大同小異。而 Flash 本身是閉源的,需要 Adobe 提供一個運行時/插件來實現,而這就導致了各種各樣的問題。比如說:

  • 安全性。閉源的代碼,不知什麼時候就出現了安全性漏洞,還沒法第一時間解決,只好等著廠家發補丁。
  • 運行速度。Flash 吃內存和 CPU 的能力令人髮指,不知是代碼沒有優化還是什麼的原因。
  • 跨平台能力。iOS 上邊就是不能用。別的有些平台上也捉急。
  • 功能擴展性:Flash 運行時並沒有提供任何第三方擴展的介面,而很多瀏覽器是可以通過擴展改變 HTML 的展示方式的。
  • ……

所以,在這幾點上,HTML5 完爆 Flash。

第三,語義化問題。Flash 有個很大的問題:很難讀取其中的資源,包括字元串和圖片。現在整個互聯網是語義化的,別人沒法讀取你的資源意味著網頁內容無法被搜索和通過演算法自動處理。你能想像一個為了列印而調節文本樣式的插件或者一個盲人使用的屏幕閱讀器軟體面對一個 Flash 控制項時候的無力嗎?更不用說搜索引擎和爬蟲了。而 HTML 就不一樣。HTML 產生的目的就是對結構文本進行語義上的標識,這樣人看起來不累,機器處理起來也不累。多好。

HTML5 再次完爆 Flash。

第四,HTML 是基於文本的,而 Flash 是基於二進位格式的。這意味著 HTML 可以邊下載邊渲染,而 Flash 在網路速度較慢的時候體驗巨差。這也意味著我用記事本或者 nano 就能打開和編輯 HTML 文件,而編輯 Flash 文件需要花好多好多錢買一套 Adobe Flash。還有,網速慢的時候我可以直接用 Lynx 或者 wget 這類速度飛快的東西看 HTML,而 Flash 估計這輩子不可能在字元終端上面跑起來了。

HTML5 再次完爆 Flash。

……

綜上所述,HTML5 能夠以更小的資源消耗達到等同甚至超越 Flash 的效果,而且其開源的性質決定了它不會是一個商業化產品。所以,我看好 HTML5 的未來。

============

我們回來說 jQuery。

jQuery 這東西我一直很喜歡,不管是那句 "Write less, do more" 的口號也好,還是優雅的 jQuery Selector 也好。不管是快速開發也好,做一個較為複雜的動畫也好,jQuery 都比原生 ECMAScript 簡單,兼容性處理得也十分好。但是,由於 HTML/JS 解釋器的負面效應,跨瀏覽器和向下兼容越來越成為一種累贅。(jQuery 前段時間果斷地放棄了對 IE6 和 7 的支持,這一點很好。)而且,作為一個通用的庫,裡面的很多代碼都是你這輩子都用不到的。所以,對於有些情況來說,jQuery (以及所有其它類似的庫)都會顯得過於龐大。

我認為,如果只是貪圖省事的個人開發,jQuery 絕對是一個好選擇。但是對於一些有實力的人或者公司,應該嘗試重新造輪子,做出一個符合自身情況的更輕量級的前端庫出來。


確定這兩個玩意可以做對比?


JQuery 取代 Flash 肯定是不合理的。
JQuery只是JavaScript腳本語言的一個非常流行的框架而已。
我覺得應該是 HTML5會是下一個Flash,而HTML5之所以如此神通廣大,也很得力於JavaScript的支撐。
正確的對應關係是:
HTML5 ——FLASH(技術)
JavaScript——ActionScript(腳本語言)
JQuery——ActionScript 3.0(框架)


其實這個問題有點意思。比較 jQuery 和 Flash 與比較 Gmail 和 QQ 很類似——他們雖然功能都比其它有相似作用的競爭對手強大很多,但這兩者之間的差別是大於共性的。這裡的差別,就是標準。
jQuery 是標準的 JavaScript 庫。它直接運行在瀏覽器的 JavaScript 引擎上,本身都是標準的 JavaScript 代碼。JavaScript 是一個標準(ECMAScript),也是一個「事實標準」——所有主流的瀏覽器都支持一個接近一致的實現。因此 jQuery 是可以運行在大多數瀏覽器上的——而調用 jQuery 的代碼,同樣是標準的 JavaScript 代碼,一樣可以運行在大多數被 jQuery 支持的瀏覽器平台上。這就是標準的力量。jQuery 只要跟隨 JavaScript 標準,就可以被所有支持 JavaScript 標準的平台支持。如果 jQuery 落後於標準,同樣可以很輕易被其他符合 JavaScript 標準的庫替代(比如針對 WebKit 的 Zepto)。這就是標準的優勢:可替換性,不會被綁定。
反觀 Flash,它只能跑在自己的平台(Flash 插件)上。Flash / AS 怎麼發展都由 Adobe 一家說了算。所以當 Adobe 放棄開發 Mobile Flash 的時候,Android 平台誰也救不了。


推薦閱讀:

為什麼Windows 10 連 Flash 的支持都做不好?
如何評價卜樺的flash作品—「貓」?
目前做 webgame,Flash 還是主流嗎?
Flash 真的是「落後的技術」嗎?
蘋果為什麼不支持flash,而是用html5技術呢?

TAG:Adobe | 前端開發 | JavaScript | jQuery | AdobeFlash |