SPA和JavaScript框架體會
今天的圖靈社群亦喜亦憂,兩篇文字交織在一起。憂的是暢所欲言變成火爆的隔空罵戰,社群是公共場所,如果你的斯文告訴你在大街上當眾吵架很不雅,那就讓那些誤解私下裡澄清去吧。喜的是,SPA技術通過今天的一篇翻譯,得到了眾人的關注。而這個SPA,正是我近兩年一直在鑽研的東西。所以,欣喜之餘,寫些體會和同行共享。
SPA,是Single Page Web Application的縮寫,大概可以翻譯為"單頁網程"。也就是說,使用者訪問了一個網址,瀏覽器顯示了一頁內容,而使用者無需去自行點選瀏覽器的"重新整理",就可以不斷地得到更新。
這個技術的核心之一是XHR,最早是微軟在IE中留給自己的Outlook Web Access的後門,被Mozilla發現後,克隆到自己的瀏覽器,最終在2005年隨著Gmail的普及,進入公眾視野,成為Ajax技術。
Ajax提供了瀏覽器頁面和網站伺服器通訊的第二通道,但這個通道只能為JavaScript程式設計使用。所以,如何讓JS這個不成熟的早產叛逆討厭鬼,規規矩矩地正式完成些像樣的工作,就成了當時web app程式設計師最頭痛的事。
jQuery赫赫有名,是因為它提供了一套簡便可靠的介面,讓JS寫的程式能遵守一些大家認可的規矩,從而才可以有精力完成較大的專案,而不必時刻擔心哪條JS指令,會不小心觸碰到不同瀏覽器中不太相容的敏感神經,引發一場不必要的誤會。
但jQuery只是個庫。也就是它只給程式設計師一些標準零件,而用哪個和怎樣用,仍要程式設計師不斷地實驗以積累經驗。這樣,從成熟的桌面應用程式、特別是Java和Cocoa程式得到的MVC的經驗,催產了大量的JavaScript MVC框架。
我接觸的最早的一個,是蘋果的Dashcode。雖然它並不是用來寫web app的,而只是給Mac OS X的Dashboard寫下些Widget。但因為它使用JavaScript而不是Objective-C,當我猶豫要不要對OC太認真的時候,我認真地研究了一下Dashcode的結構,驚訝地發現,JavaScript可以這樣寫,而且可以完整地再現桌面程式。要知道2008年時我還和絕大部分程式設計師一樣小瞧JavaScript,認為它不堪大任,就是在網際網路小打小鬧,幫著那些大佬跑馬圈地而已。
Dashcode內部是SproutCore,也就是現在的Ember。它因為有些龐大,下載較慢,不太適合web app。而Backbone則比較直截了當,所以廣泛用在了第一批的MVC結構的Web App中。那時,SPA這個詞還沒有出現在大家視野,市面上炒得最熱的,仍舊是Ajax。
隨著Backbone的成功,更成功的就是同一個天才作者所發明的CoffeeScript語言。而隨著我對JavaScript的恐懼日益嚴重,CoffeeScript就成了當時一個小專案的救命稻草。還好,CS也好,Backbone也好,都隨著那個小專案的取消,淡出了我的視野。
現在的專案,讓我有時間比較AngularJS,SpineJS,以及——Dart!
簡單地講,AnguluarJS因為使用HTML作為模版,比較適合需要專門設計師的專案,而其良好的模組結構,以及完備的測試框架,也為大型工程提供了堅實基礎。作為谷歌核心產品的Double-Click廣告發布平臺的框架,至少證明了其成熟度和光明前途。如果現在需要投資一門MVC,AngularJS是最佳人選之一。
SpineJS的優勢是它與CoffeeScript以及Backbone的淵源。因為它很小巧,又有一本書詳細解釋其架構,所以,如果要徹底學習和掌握MVC的內部,可以從它入手。
至於Dart,我仍在持續關注中,希望它在2012年底穩定下來,2013年可能會大放光彩。
相關文章
- Laravel 框架學習心得體會Laravel框架
- 我還會JavaScript和CSSJavaScriptCSS
- 最佳的 JavaScript 前端框架、庫和工具JavaScript前端框架
- SPA
- JavaScript 即未來:介紹 14 個 JavaScript 的框架和庫JavaScript框架
- 原生JavaScript實現的SPA單頁應用(hash路由)JavaScript路由
- 微前端框架 之 single-spa 從入門到精通前端框架
- 微前端框架single-spa子應用載入解析前端框架
- 10個最好的 JavaScript 動畫庫和開發框架JavaScript動畫框架
- JavaScript框架中的變動和變動檢測JavaScript框架
- JavaScript運動框架JavaScript框架
- oracle rat spaOracle
- JavaScript 教程之JavaScript常用框架簡介JavaScript框架
- javascript單元測試框架mocha 和 斷言庫 assertJavaScript框架
- JavaScript 設計模式入門和框架中的實踐JavaScript設計模式框架
- 積體電路行業管理軟體sap框架和erp框架的區別行業框架
- 【JavaScript框架封裝】公共框架的封裝JavaScript框架封裝
- 三大JavaScript框架對比——AngularJS、BackboneJS和EmberJSJavaScript框架AngularJS
- 5 個免費的JavaScript庫和CSS 框架的CDN加速JavaScriptCSS框架
- Top 10:HTML5、JavaScript 3D遊戲引擎和框架HTMLJavaScript3D遊戲引擎框架
- JavaScript視窗功能指南之命名視窗和框架 (轉)JavaScript框架
- 原生體驗擋不住!JavaScript開源跨平臺框架NativeScriptJavaScript框架
- 初步認識微前端(single-spa 和 qiankun)前端
- spa-to-http:輕量級零配置SPA HTTP 伺服器HTTP伺服器
- 如何一步步打造基於 React 的移動端 SPA 框架React框架
- JavaScript之記憶體溢位和記憶體洩漏JavaScript記憶體溢位
- 2017年 JavaScript 框架回顧 -- 前端框架JavaScript框架前端
- Js函式和物件學習體會JS函式物件
- 軟體能促進社會和諧
- Vue SPA專案SEO優化之預渲染Prerender-spa-pluginVue優化Plugin
- JavaScript單元測試框架JavaScript框架
- JavaScript框架的四個時代JavaScript框架
- JavaScript 客戶端框架—AureliaJavaScript客戶端框架
- 如何克服 JavaScript 框架疲勞?JavaScript框架
- JavaScript 的輕框架開發JavaScript框架
- 推薦10款優秀的JavaScript Web UI庫 框架和套件JavaScriptWebUI框架套件
- oracle SPA 效能分析案例Oracle
- Oracle SPA使用詳解Oracle