实时Javascript开发框架Clouda、Meteor、Firebase对比
什么是實(shí)時(shí)Javascript開(kāi)發(fā)框架?
自從2009年Node.js橫空出世以來(lái),吸引了無(wú)數(shù)程序猿們的眼球:前端后端都用一樣的語(yǔ)言來(lái)做開(kāi)發(fā)是多么和諧完美的一件事兒,前端工程師們?cè)僖膊挥谜覍?xiě)后端的大爺們配合調(diào)代碼了。Node.js的強(qiáng)勢(shì)是無(wú)須質(zhì)疑的,基于Chrome的V8引擎、超低學(xué)習(xí)門(mén)檻、事件驅(qū)動(dòng)、Socket.io、良好的模塊管理工具,給Node.js帶來(lái)了無(wú)限的想象空間。
實(shí)時(shí)開(kāi)發(fā)框架里面的Realtime的意思是,前端和后端的數(shù)據(jù)交換是實(shí)時(shí)的,也就意味著一旦服務(wù)器在有了最新的數(shù)據(jù)時(shí),前端會(huì)實(shí)時(shí)得到數(shù)據(jù)并呈現(xiàn)在用戶面前。據(jù)測(cè)試,這一速度可以達(dá)到10ms這一個(gè)級(jí)別。10ms什么概念?App上一次接收到數(shù)據(jù)都還沒(méi)來(lái)得及展示到用戶的屏幕上,由此帶來(lái)的用戶體驗(yàn)革命可想而知:-)。
這巨大的突破來(lái)源于Node.js 的架構(gòu)與 Django, Rails 等傳統(tǒng)的 Framework的本質(zhì)的不同,它不需要放在 Nginx / Apache 后,利用 WSGI、 CGI 之類的接口一板一眼的 [接受Request] -> [運(yùn)行程序邏輯] -> [生成并返回Response],而是跟前端的直接對(duì)話。這是一個(gè)巨大的變化,之前一些無(wú)法想象的功能都有可能實(shí)現(xiàn)了。比如 https://github.com/Miserlou/DirtyShare 可以用瀏覽器實(shí)現(xiàn) P2P 的文件傳輸。正因?yàn)镹ode.js 可以更精細(xì)的控制 Request 和Response 的時(shí)間和內(nèi)容,WebSocket 似乎天生就是為 Node.js 而生的,而配合 http://socket.io 這個(gè)神奇的庫(kù)之后,在Realtime WebApp 這個(gè)領(lǐng)域,Node.js 已經(jīng)沒(méi)有對(duì)手了。[1]
?
介紹完實(shí)時(shí)JS開(kāi)發(fā)框架的概念,該上干貨了,歡迎圍觀Clouda、Meteor、Firebase的大PK,圍觀之前請(qǐng)自備Node.js及MongoDB基礎(chǔ)知識(shí):
共同優(yōu)點(diǎn):
1.? 前后端統(tǒng)一,只用Javascript一門(mén)語(yǔ)言,抹平云端界限,一份代碼處處運(yùn)行。
2.? 實(shí)時(shí)數(shù)據(jù)同步,所有數(shù)據(jù)實(shí)時(shí)推送的基礎(chǔ)設(shè)置,每個(gè)終端都無(wú)延遲同步響應(yīng)。
3.? 前端隨動(dòng)反饋,面向數(shù)據(jù)的編程模型,數(shù)據(jù)實(shí)時(shí)推送后,界面會(huì)自動(dòng)更新。
4.? 省流量,省掉了通過(guò)Ajax請(qǐng)求建立和關(guān)閉連接時(shí)的暫用的額外流量。
5.? 跨平臺(tái),iOS、Android、PC端一應(yīng)俱全。
6.? 代碼簡(jiǎn)潔,輕輕松松幾分鐘內(nèi)實(shí)現(xiàn)一個(gè)聊天室或TodoList的跨平臺(tái)應(yīng)用。
不算缺點(diǎn)的缺點(diǎn):
1.? 沒(méi)有Web UI,得自行解決UI問(wèn)題。
2.? 前后端混合編程可能剛開(kāi)始有點(diǎn)難以理解。
?
Clouda (開(kāi)發(fā)框架):http://cloudajs.org/
優(yōu)點(diǎn):
1.? 專為移動(dòng),全面兼容手機(jī)、平板、PC。
2.? 高兼容性,標(biāo)配數(shù)據(jù)同步工具,兼容已有服務(wù);同時(shí)兼容Backbone等開(kāi)源框架。
3.? SEO能力,原廠匹配主流搜索引擎,每個(gè)APP場(chǎng)景都可以被搜索引擎爬蟲(chóng)抓取。(度娘的良心!)。
4.? 中文框架,簡(jiǎn)單語(yǔ)法搭配豐富教程與文檔,保證快速上手,還配有5分鐘教程。
5.? 多種渲染模式,支持客戶端和服務(wù)端渲染,節(jié)省服務(wù)端或客戶端的運(yùn)算資源。
6.? MVC結(jié)構(gòu),便于代碼管理及擴(kuò)展開(kāi)發(fā)。
缺點(diǎn):
1.? 新框架,學(xué)習(xí)資料偏少。
2.? 目錄結(jié)構(gòu)略微復(fù)雜,上手難度高。
3.? 完善度不高,部分代碼難以理解。
Meteor (開(kāi)發(fā)框架):http://www.meteor.com
優(yōu)點(diǎn):
1.? 結(jié)構(gòu)簡(jiǎn)單,上手較容易(非MVC框架)。
2.? 實(shí)時(shí)代碼更新,在服務(wù)器代碼更新后,客戶端無(wú)須用戶干預(yù),實(shí)時(shí)更新。
3.? 延遲同步機(jī)制,用戶提交的數(shù)據(jù)實(shí)時(shí)反饋在屏幕上,如果因?yàn)榫W(wǎng)絡(luò)原因數(shù)據(jù)提交失敗,數(shù)據(jù)會(huì)在網(wǎng)絡(luò)重新連接后上傳。
4.? 便捷發(fā)布,打包后的程序中會(huì)包含所有依賴項(xiàng),讓代碼可以在任意裝有Node.js的機(jī)器運(yùn)行。
5.? 互通性,支持通過(guò)DDP協(xié)議連接到NativeAPP、數(shù)據(jù)庫(kù)甚至是Arduinos。
6.? 兼容性,可以輕松的兼容其他模板框架、測(cè)試框架、Dom操作框架等。
?
Firebase (數(shù)據(jù)服務(wù)):https://www.firebase.com/
優(yōu)點(diǎn):
1.??????Api簡(jiǎn)單,使用起來(lái)非常的方便,可大大減少代碼量。
2.??????可通過(guò)網(wǎng)頁(yè)對(duì)數(shù)據(jù)進(jìn)行管理,很方便。
3.??????支持SSL、權(quán)限認(rèn)證、數(shù)據(jù)安全機(jī)制。
缺點(diǎn):
1. 數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫(kù)存儲(chǔ)方式不一致(由于想支持REST方式讀取數(shù)據(jù))
2. 不能部署自己的數(shù)據(jù)庫(kù)(很多項(xiàng)目都需要自己維護(hù)數(shù)據(jù)庫(kù)的)
3. 目前數(shù)據(jù)操作能力較弱(有很多需求(稍微復(fù)雜點(diǎn)的查詢)目前Firebase很難支持)
4. 數(shù)據(jù)分析功能很弱,只能查看流量和當(dāng)前在線人數(shù)(獨(dú)立數(shù)據(jù)庫(kù)的話,這部分很容易做的更強(qiáng)大)[2]
?
總的來(lái)說(shuō),Cloudajs具備較大的本土化資源優(yōu)勢(shì)、支持SEO,Meteor的功能更強(qiáng)勁,Firebase更傾向于數(shù)據(jù)服務(wù)而非開(kāi)發(fā)框架。
?
引用:
[1] http://www.zhihu.com/question/19653241
[2] http://cnodejs.org/topic/51f0edf7f4963ade0e082c19
總結(jié)
以上是生活随笔為你收集整理的实时Javascript开发框架Clouda、Meteor、Firebase对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 黑洞木马实验
- 下一篇: 【读书笔记】Flickr 网站用户标签的