Meteor.js
Outline
- Meteor 簡介
- 框架比較
- 系統架構
- 學習資源
- 做一個吧
Introduction
特性1.
網線上只有資料
(Data on the Wire)
Data on the Wire
Meteor是單頁應用程式框架。內建的伺服器架構會對所有使用者使用的JavaScript、模板與樣式檔案統一整合、壓縮、打包,在整個程式初始化時就會讓使用者全部下載。初始化之後,基本上不會載入更多的程式碼,只有資料會透過分散式資料協定進行持續地同步更新。
因為此架構,Meteor可大量降低使用者對伺服器的請求次數與頻寬負載,減少每次使用者動作時可能需要的等待時間。
特性2.
只需要一種語言
(One Language)
One Language
Meteor建構在以JavaScript為基底的node.js與MongoDB之上,使它能夠達成「前後端都使用同一套語言」的目的。與其他同樣建構在node.js上的框架不同,是一個同時包含了使用者端與伺服器端設計的框架,即全端框架。因此在Meteor的框架下,開發者除了能夠從使用者端到伺服器端都使用相同的語言,還能做到兩者的實時溝通,開發能對使用者的操作快速回應的系統機制。
在牽涉到複雜的商業模型時,開發者不再需要在使用者端與伺服器端各置建置不同的資料模型,避免兩端的資料模型都需要設計複雜的溝通方法。這也正是同構式Javascript的設計概念。
特性3.
無處不在的資料庫
(Database Everywhere)
Database Everywhere
Meteor捨棄過往的RESTful A模式,改用分散式資料協定進行使用者與伺服器的資料同步,同時透過minimongo等套件在使用者端與伺服器端建構相同的資料庫介面,讓開發者能夠在使用者端就可以對資料庫進行存取。
開發者能夠將資料相關的程式邏輯全部建立在使用者端,伺服器端則專注於資料安全與權限控管上,只需思考「哪些資料能給哪些使用者」與「哪些使用者能夠修改哪些資料」,而不需要為不同存取方式建立不同的API與複雜的安全機制。
這種伺服器架構在一定程度上減少了程式的可能疏漏,提升網站的安全性。
Full Stack Reactivity
響應式應算設計模式貫穿了整個Meteor框架。這個設計能夠讓系統在一連串的邏輯運算中去自動蒐集所依賴的變數,當變數產生變化時,自動重新運算以得出新的結果。與JavaScript傳統的觀察者模式、單雙向資料綁定方法不同,開發者不需要將資料模型與運算或者UI進行綁定或任何的額外設定。
透過響應式應算與分散式資料協定的溝通,無論資料的異動發生是發生在伺服器端、使用者端甚至是資料庫端,這些異動都能實時的傳送給需要的地方而這整套機制都不需要開發者付出額外的開發成本。
特性4.
延遲補償機制
(Latency Compensation)
Latency Compensation
由於開發者在使用者端與伺服器端都使用相同的資料模型, Meteor能模擬使用者在使用者端操作的影響且立即的顯示在UI介面上,不需要等待伺服器端的回應,讓使用者在正常情況下完全看不到所謂的Loading畫面。
當伺服器端資料異動結果與使用者端不相符時,Meteor能在察覺後將伺服器端的正確資料自動補償回前端,透過響應式應算的機制,去重新計算並顯示正確的UI。
特性5.
全端實時響應式設計
(Full Stack Reactivity)
Full Stack Reactivity
響應式應算設計模式貫穿了整個Meteor框架。這個設計能夠讓系統在一連串的邏輯運算中去自動蒐集所依賴的變數,當變數產生變化時,自動重新運算以得出新的結果。與JavaScript傳統的觀察者模式、單雙向資料綁定方法不同,開發者不需要將資料模型與運算或者UI進行綁定或任何的額外設定。
透過響應式應算與分散式資料協定的溝通,無論資料的異動發生是發生在伺服器端、使用者端甚至是資料庫端,這些異動都能實時的傳送給需要的地方而這整套機制都不需要開發者付出額外的開發成本。
特性6.
包容一切
(Embrace the Ecosystem)
Embrace the Ecosystem
Meteor是一個永久開源的專案,其討論資源、套件管理網站Atmosphere上的五千多個套件也皆圍繞著開源社群而建立。
除此之外,Meteor彈性的套件管理系統讓你可以輕易的捨棄預設機制或整合新的機制進來。開發者可以輕易的援引其他建構在node.js上的伺服器框架或套件,甚至在效能的考量下將其他語言寫的程式包裝成binary模組引用。
前面所提到的各種預設機制也都不需要開發者使用特定規範好的程式運作流程或資料模型,這讓開發者可以輕易的使用任何舊有的套件,甚至是其他前端框架,如Backbone.js、Augnlar.js、React等。
特性7.
簡單造就生產力
(Simplicity = Productivity)
Simplicity = Productivity
作為一個包含伺服器端的框架,Meteor如Rails一般具有簡單的命令列功能,讓開發者可以快速的布署建構伺服器。
內建Live Upload功能,讓開發者在更新程式時可以即時更新到每一個正在開啟網頁的使用者端。同時所有使用者端程式碼都能在布署時自動壓縮、整合,提升程式效能。支援大量語言的自動編譯機制,如JavaScript的Babel、
CoffeeScript、TypeScript、
LiveScript、CSS的Stylus、Sass、
Less與HTML的JadeTemplate
。Meteor同時還整合進了Cordova
,讓開發者能不需要太多的修改就
能將網頁程式轉為手機應用程式。

為什麼要使用Meteor?
讓開發者能用更少的程式碼達成更多的效果,用更少且簡單的邏輯做到更多的工作,提升了開發速度也增加了可維護性。
- 有大量複雜操作的網路應用,如網頁遊戲。
- 功能龐大且容易增生需求、需要經常修改擴充的網路應用,如企業內部的員工入口網、資訊管理、表單管理、客戶管理等系統。
- 即時提供或者交換資訊用途的網站或手機應用程式,如聊天室、即時新聞、氣象、公車資訊網。
適合用
Meteor
框架的網站類型
框架比較
適合用
的網站類型
不適合用
的網站類型
- 有大量複雜操作的網路應用-(網頁遊戲)。
- 功能龐大且容易增生需求、需要經常修改擴充的網路應用-(企業內部的員工入口網、資訊管理、表單管理、客戶管理等系統)。
- 即時提供或者交換資訊用途的網站或手機應用程式-(聊天室、即時新聞、氣象、公車資訊網)。
- 純靜態的資訊網頁,如公司產品介紹網。
- 操作性不高或完全無需即時資訊交換的網站,雖然並不是不能做,但是並不具有優勢。
Meteor V.S. Django
|
|
||
|
語言 |
JavaScript |
Python |
|
Ajax應用 |
服務器和瀏覽器間的雙向通信 |
要接收、確認、回復才行 |
|
適合網站 |
· 電子商務網站 · 新聞網站 · 公共設施網站 · 微型博客 (一些須即時更新的網站) |
大量靜態内容的博客、维基 如果一直更新會無法觀看 |
|
優缺點 |
一種語言可用於前端後端 |
需用不同語言寫一樣的東西(前端後端) |
系統架構
學習資源
做一個吧~~
Copy of Meteor
By hsin-chieh
Copy of Meteor
- 213