自從Node.js撼動整個Web開發領域以來,JavaScript Web全棧開發框架層出不窮,但是隨著時間流逝,人們也逐漸意識到Node.js并不適合所有場景,一體化的開發框架也不一定適合JavaScript, 眾多JS Web框架紛紛沉寂,但唯有Meteor以其韌性堅持下來并脫穎而出,成為JavaScript Web開發框架的代表。
2011年組建的Meteor畢 業于YCombinator訓練營,成員來自Google等巨頭企業。迄今為止,Meteor開發團隊已經拿到了多輪投資,包括早期Andressen Horowitz領投的1000萬美元,以及在推出Galaxy前夕的融資2000萬美元。Meteor于2014年十月發布1.0版本,2015年的八 月份,Meteor超過Rails,Github Star數接近3萬,成為GitHub最受歡迎的網絡應用開發框架。
作為一個開源框架,Meteor有著產品級的實時性和跨平臺特性,提供多種功能且易用性極佳。InfoQ一直關注Meteor的發展情況,并進行了跟蹤報 道。近日Meteor發布了Galaxy應用托管服務,標志著Meteor正式進入商業運營的階段。本文將回顧Meteor的發展,并分析Meteor的 優缺點,以及Meteor的未來。InfoQ記者還就相關問題請教了Vue.js作者、Meteor的開發者之一尤雨溪。
Meteor早期版本以實時框架為賣點,外界對它的關注大約從0.4版本開始,這個版本將其Node.js依賴從0.6更新到0.8版本,而Node.js也正是從0.8版本開始漸漸普及。下面列出Meteor的主要版本更新:
從上面的更新我們可以看到Meteor不止是在打造一個框架,也是在構建一個從研發到部署、從Web到移動的、JavaScript全棧開發的生態鏈,這是開發者選擇Meteor的原因之一。
從 發展趨勢來看,Meteor的出現并不是偶然。在Web開發中,一體化的框架非常多,如Rails就是其中的杰出代表,以其快速開發的能力受到人們青睞。 Node.js橫空出世以來,最主流的Web框架是Express,但是它只能算微框架,要想開發出一個功能完整的應用還需要大量的配置和很多的功能插 件。市面上并沒有主流的Node.js一體化框架,Meteor瞄準了這個缺口,也獲得了市場的承認和開發者的喜愛。
從開發者的眾多反饋來看,選擇Meteor的原因不外乎下面幾點:社區活躍、學習難度低、大量原生功能和優秀的生態系統,以及其主要的賣點:實時性框架。
另外,Meteor從最開始的一個重要賣點就是實時框架,而現在實時性在Web應用甚至移動應用中用到的地方越來越多,證明Meteor選擇這個方向也是對的。
當然,Meteor并不是沒有缺點,比如近期推出的Galaxy就遭到了詬病,Meteor本身是為了降低開發門檻,快速開發,適用于中小團隊和創業者,但是Galaxy最低每月500美元的價格與這個定位并不匹配,在發布之后受到開發者的非議。
除了這個之外,Meteor缺乏大型成功案例,沒有經過實踐的洗禮,也讓開發者懷疑它是否足夠成熟可用。在這篇Meteor在生產環境的實踐的文章里,作者提到了他使用Meteor的痛點,那就是部署在非官方平臺的體驗并不好,另外,某些關鍵功能插件并不好用,亟待加強和優化。
而 讓人不選擇Meteor的根本原因,還與趨勢相關。Node.js包管理器NPM十分好用,并且迅速流行開來,對于Node.js開發者來說,依賴NPM 來進行模塊化的開發非常方便,而Express框架是很多Node.js開發者入門必學,因此它所倡導的模塊化+高度可配置的理念也就默認被人們所接受。 在這篇文章里 作者就希望人們使用更多庫而不是框架來開發Node.js Web應用。當然,不管趨勢如何變化,我們可以肯定的是,至少很長一段時間內,類似于Meteor這樣的一體化框架還會有它的市場。尤雨溪表示:“是否使 用框架是按實際情況考慮的。全棧式框架的價值在于對于沒有特殊要求的應用,能夠在極短的時間內開發出可用的產品。去框架化對于技術人員來說是很浪漫的事 情,但當你拿了融資,需要在幾個月內產品上線的情況下,未必有那么充裕的時間去自己整合各種組件,實現一些框架已經實現了的功能。”
從目前的表現來看,Meteor正在穩步發展,但是,它所處的環境,無論是Node.js,還是JavaScript社區,都正在劇烈變化當中,誰也不能預測未來Meteor到底能否成功。
在 筆者看來,Meteor的未來是否成功,在很大程度上將取決于移動端,目前Meteor通過PhoneGap來支持移動應用打包,但是,相比于目前移動 Web的發展,它已經有些落后于潮流,React Native才是人們的新寵,InfoQ記者向尤雨溪詢問Meteor是否有計劃支持React Native,他表示React Native的運行環境和打包方式都和現在集成Cordova的方式區別很大,因此目前還沒有具體的計劃,不過未來肯定會去嘗試。希望Meteor在這方 面更激進一些,像1.2版本支持ES6、Angular和React,就十分受到開發者的歡迎。
另外,Galaxy的發布,也讓人擔心,Meteor的重心是否轉向提供服務,框架的功能創新是否會放慢速度。尤雨溪則表示無需擔心,因為只有保持框架本身的競爭力才能為Galaxy吸引到客戶,所以肯定不會對框架本身松懈的。
至 于近一段時間Meteor的開發計劃,尤雨溪介紹道,他們已經在計劃對Meteor本身進行一些大的改動來解決一些社區公認的問題,比如Meteor自身 的模塊系統一直受人詬病,他們在1.3會加入對ES6 module的支持。另外還會加強對于NPM的原生支持,讓Meteor應用可以更簡單地調用NPM上的資源。
JavaScript 社區一直充滿活力,每天各種各樣的框架層出不窮,但是真正成功商業化的不多,我們也衷心希望Meteor能為JavaScript框架探索出一條成功的道 路。對開發者來說,Meteor作為一款功能全面、簡單好用的一體化框架,在開發Node.js Web應用的時候,是一個不錯的選擇。