Meteor的官網( Meteor )這樣介紹這個框架:javascript
Meteor is an open-source platform for building top-quality web apps in a fraction of the time, whether you're an expert developer or just getting started.
top-quality web apps 咱們放下不表,fraction of the time 的提法很新穎,看來這個框架的目標是解放程序猿,少花時間多辦事。雖然具體的演化路徑我不得而知,但從網絡上的各類蛛絲馬跡來看,Meteor吸取了 google wave, asana等平臺背後的開發工具的精髓,逐漸演進出了目前的版本。Meteor的幕後團隊至關強悍:他們大多畢業於MIT,是成功的創業家,也是一流的工 程師,其中一個開發者仍是神器 etherpad 的做者。
METEOR究竟有什麼NB的地方?
首先,Meteor構架與nodejs之上。這使得 One Language 成爲可能,同時可依託nodejs上諸如http://socket.io這樣強大的類庫內置 realtime,Date on the Wire 等特性。
在一種語言的基礎上,Meteor統一了服務器端和客戶端的數據訪問,提出 Database Everywhere,一套DB API大大減輕了開發負擔,不用再作server data JSON client data的轉換(想一想你的django 或者rails app,在這上面花了多少功夫?)。
爲了讓app達到最佳的用戶體驗,Meteor還提供了 Latency Compensation,客戶端對數據的更新即時反應到UI,若是更新被服務器reject,再rollback。大多數狀況下,用戶會獲得極佳的相似本地數據庫的體驗。
Meteor最讓人叫絕的是其 Full Stack Reactivity。關於reactivity programming的詳細介紹,請參考Reactivity Programming,這裏不展開。簡言之,當數據發生改變的時候,全部依賴該數據的地方自動發生相應的改變。
用過backbone的同窗都知道,當model發生改變的時候,咱們須要經過註冊相應的事件,顯式更新對應的DOM,若是數據在頁面中多處被渲染,則每處對應的DOM需挨個更新。
ember 在backbone的思想上更近了一大步,經過內置的data binding API,讓數據和DOM可以雙向綁定,程序猿不用再花心思去考慮DOM的更新。然而,蹩腳的API調用(全部對binding的數據的訪問須要經過 getter和setter,你懂的)和DOM中無處不在的script垃圾讓ember既不簡約也不優雅。
而Meteor則另闢蹊蹺,經過reactivity context和dependency巧妙地支持了reactivity(據做者說核心代碼就幾十行),使用者幾乎感覺不到代碼的變化。
Meteor 另外一個很貼心的點是零部署。開發web app有點小頭疼的點是打包和部署。好比說,把less轉成css,coffee轉成javascript,而後混淆,壓縮,雖然有些自動化的工具能夠簡 化這部分工做,可還免不了相應的配置和一些腳本工做。在開發環境下,meteor會自動替你加載js/css,若是你使用了coffee/less (sass),只要add了相應的smart package,meteor會自動幫你處理;開發完畢後要部署,只須要運行meteor bundle,系統自動會將相關的資源打包,只要目標系統上有相應版本的nodejs,meteor和mongodb,就能運行一個標準的 production版本。
如下是meteor官網上的介紹,當你真正使用meteor後,會發現還真不是吹牛。css
SEVEN PRINCIPLES OF METEOR
Data on the Wire. Don't send HTML over the network. Send data and let the client decide how to render it.
One Language. Write both the client and the server parts of your interface in JavaScript.
Database Everywhere. Use the same transparent API to access your database from the client or the server.
Latency Compensation. On the client, use prefetching and model simulation to make it look like you have a zero-latency connection to the database.
Full Stack Reactivity. Make realtime the default. All layers, from database to template, should make an event-driven interface available.
Embrace the Ecosystem. Meteor is open source and integrates, rather than replaces, existing open source tools and frameworks. Simplicity Equals Productivity. The best way to make something seem simple is to have it actually be simple. Accomplish this through clean, classically beautiful APIs.
以上內容摘自個人博客文章:爲何是Meteor
[補充] 下一代的web app是什麼?
咱們看看幾代計算機體系的發展。web/cloud時代是否是重複者mainframe/CS時代走過的路?那麼,咱們是否是有理由相信,meteor在此作的嘗試是一個正確的方向?html