流星撞擊全棧之《Meteor實戰(zhàn)》@阿貍不歌

圖1 Meteor 實戰(zhàn)封面

? ? ? ?廣義的Web全棧眶熬,一般包含后端開發(fā)、前端開發(fā)块请、界面設計娜氏、產品設計、數據庫墩新、各種移動客戶端開發(fā)等等贸弥,狹義的Web全棧則至少包含后端開發(fā)、前端開發(fā)海渊、數據庫绵疲。全棧的難度在于要求你掌握前后端的多種技能、可能要學會多種語言臣疑,比如大家都很典型的全棧概念LAMP(Linux+Apache+Mysql/MariaDB+PHP/Python/Perl)盔憨,前端要用Javascript自不必說,后端或用PHP讯沈、或用Python/Perl郁岩,數據庫你還得會SQL,要想一個人掌握這么多技術和語言缺狠,還是頗有些難度的问慎,即使掌握了,在實際開發(fā)中挤茄,你的腦袋還要在各種不同語言之間來回切換如叼,既增加了腦力負擔,有提升了出錯機率穷劈,實在是一件讓人郁悶?? 的事情笼恰。

? ? ? 不過繼Node.JS和MongoDB誕生之后片酝,一個新的全棧概念MEAN誕生了,從此世界發(fā)生了不小的變化挖腰。所謂MEAN是一個強大的JavaScript全棧解決方案雕沿,它由四大組件組成:數據庫MongoDB、Web服務器框架Express猴仑、Web客戶端框架Angular审轮,以及服務器平臺Node.js。這些組件由不同的團隊開發(fā)辽俗,由開發(fā)人員和倡導者組成的社區(qū)推動各個模塊的開發(fā)疾渣,并為其創(chuàng)建相關文檔。如果你是一名Javascript程序員崖飘,那么對于“Javascript全棧開發(fā)”這個概念想必不會太陌生榴捡,即便沒有親自嘗試過,也應該有所耳聞朱浴。圖靈出版的《MEAN Web開發(fā)》吊圾、《MEAN實踐》《Node與Express開發(fā)》、《JavaScript快速全棧開發(fā)》都介紹了Javascript全棧開發(fā)的理念翰蠢。MEAN的主要優(yōu)勢在于其以JavaScript為主要的編程語言项乒。用一門語言就搞定前后端、數據庫梁沧,光想想就是一件令人興奮的事情?? 檀何!?


? ? ? 當然,學習正統(tǒng)的MEAN開發(fā)廷支,你還是要分別去學習MongoDB频鉴、Express、Angular和Node.JS的恋拍,有沒有更加簡單(偷懶)的方式呢垛孔,想什么呢 ??? ! 答案是:還真的有 —— 那就是 Meteor ?? (Web界的流星),按照《Meteor實戰(zhàn)》的說法芝囤,Meteor仍然是基于MEAN棧的似炎,或者說是屬于泛MEAN陣營的(即泛指那些運行于Node.js之上并使用NoSQL數據庫的任何框架辛萍。MEAN棧架構圖見圖2)悯姊。只是Meteor建構了一個捆綁的更為緊密的生態(tài)系統(tǒng),而不僅僅是服務器進程和庫(框架)的組合贩毕。

簡單地說悯许,Meteor是完全使用JavaScript創(chuàng)建富Web應用程序的開源平臺。它在同一個框架下捆綁并提供所有必需的組件辉阶。它由以下幾部分組成:Node.js先壕、MongoDB瘩扼、實際的應用程序代碼,以及一個強大的CLI工具垃僚。

圖2 MEAN棧架構圖

? ? ? 如果使用Meteor集绰,你可以馬上從零開始(當然,必要的Javascript基礎還是要有的谆棺,具體請參閱本書第一章)創(chuàng)建Web應用程序栽燕,如果你閱讀了本書第二章,你就會發(fā)現建立一個包括響應式用戶界面改淑、用戶賬戶管理碍岔、和一個進行透明性響應式編程的Web程序可以做到如何之快!只要照著例子使用Meteor的CLI(命令行工具)朵夏,你甚至無需知道怎樣安裝或配置任何服務器軟件(Meteor已經幫你搞定了所有基礎設施方面的工作)蔼啦。比如在傳統(tǒng)的MEAN棧里,用戶認證和登錄這部分工作仰猖,你是得在前端用Angular寫捏肢,服務端用Express + Node.JS 來寫,最后用戶數據在MongoDB上的存取你也得寫饥侵,而Meteor把這些繁瑣工作已經打包好了猛计,你要做的就是敲敲它的命令行。有國外程序員做一圖(見圖3)比較正統(tǒng)MEAN棧與Meteor(Comparing Meteor.js and the MEAN stack)爆捞,猶如裝滿零件的購物車?? 與超跑 ??? 的區(qū)別奉瘤,還是頗為形象的。

圖3 Meteor超跑

本書的第二部分(3-10章)進一步通過實戰(zhàn)性的例子詳細介紹了Meteor的主要組成部分(見圖4)煮甥。

圖4 Meteor主要構成圖

? ? ? ?第3章介紹的是Meteor自有的Blaze庫盗温,是Meteor以前默認的前端庫,需要指出的是成肘,Meteor并沒有把前端UI綁死在自己的Blaze庫上卖局,實際上,在官網上就有Meteor用三種不同前端庫(Blaze双霍、Angular.JS砚偶、React)做Todo List的教程。另外洒闸,還有一個需要透露的秘密就是染坯,在最新的Meteor官方指南當中,Blaze只是一筆帶過丘逸、Angular的介紹還停留在1.x階段单鹿、而著墨最多的則是React,鑒于最近兩年React的火爆深纲,各中緣由恐怕不言自明仲锄。

? ? ? ? 一個完整的Web應用毫無疑問要涉及數據的增劲妙、刪、查儒喊、改(CRUD)镣奋,第四章介紹的就是Meteor如何進行CRUD,由于Meteor的數據庫使用的是MongoDB怀愧,所以其數據建模的思想還是與傳統(tǒng)的SQL數據庫有很大區(qū)別的唆途,如果要做復雜一些的應用,就需要深入了解一些MongoDB的知識掸驱,具體可以參見《MongoDB權威指南》肛搬、《MongoDB實戰(zhàn)》、《深入學習MongoDB》等書毕贼。

? ? ? ? 第5章介紹了Meteor的重頭之一——響應式編程温赔,利用Meteor數據庫無處不在的原則,并使用只存在于客戶端的本地集合鬼癣。這樣做的好處在于陶贼,你對數據/表單的更改變化在界面上直接反應出來,不用等到數據提交到后臺再被取回前端再渲染待秃,實際上就消除了等待數據往返后端的時間拜秧,在用戶體驗上自然能得到更好的效果。

? ? ? ? 生產環(huán)境中的Web應用肯定離不開用戶注冊和登錄章郁,以及認證(authentication)和授權(authorization)枉氮,并且要更細粒度的方式來定義用戶權限,這些工作如果是自己開發(fā)暖庄,那都是很繁瑣的事情聊替,而且安全性 ?? 還是個問題。而Meteor已經幫你把這件事給做好了培廓,你幾乎不需要再寫任何代碼惹悄。當然,你也可以不自建用戶名和密碼系統(tǒng)肩钠。使用常見的社交賬戶登錄到你的應用可以降低注冊的門檻泣港,這種方式我們稱為OAuth(Open Authorization),Meteor集成了諸如微博价匠、臉書当纱、GitHub、推特霞怀、谷歌等賬號登錄的API惫东,你只要敲下“meteor add accounts-facebook”這樣類型的指令就夠了莉给。

? ? ? 結合用戶認證和授權毙石,Meteor就可以輕松的根據用戶權限和系統(tǒng)配置來實現用戶數據的發(fā)布和訂閱廉沮,比如通過文檔字段(比如用戶/所有者ID)來安全地限制所發(fā)布的數據,或者確毙炀兀客戶端提供的所有數據在使用前都進行了驗證滞时。

? ? ? 第8章介紹的是Meteor的路由、第9章是Meteor的包管理滤灯,這些內容在各種前端框架中都比較常見坪稽,所以不再贅述。


? ? ? 關于Meteor的下載鳞骤、開發(fā)和部署窒百,個人建議可以使用docker來幫助我們,有一個很好用的開源工具meteor-up豫尽,使用 docker 來運行 Meteor 和 MongoDB篙梢,并且可以方便的把本地 Meteor 部署到云服務上。只要你有一些docker的基礎美旧,借助meteor-up來實現不是一件難事渤滞。


? ? ? ?總結,Meteor的主要優(yōu)點如下:

1榴嗅、容易學習妄呕,與正統(tǒng)MEAN棧相比,新開發(fā)人員不必對松耦合的前端庫和后端框架進行深入地研究嗽测,就可以實現一些應用绪励。對JavaScript有些基本的了解就足夠開始

2唠粥、大部分應用可以在客戶端上運行优炬,好處是:服務器的負載會較小,用戶界面的響應很快厅贪,用戶體驗比較好蠢护。

3、代碼可重用养涮,由于Meteor的同構(Javascript)性質葵硕,同樣的代碼可以在瀏覽器中、服務器上甚至是移動設備上運行贯吓。

4懈凹、強大的命令行工具,Meteor提供了開箱即用軟件包管理和構建管理工具悄谐,覆蓋了整個構建過程介评,從收集和編譯源文件到文件精簡、源映射、解決依賴關系等等们陆,讓你把心思用在業(yè)務邏輯上寒瓦。


? ? ? 如果你需要一個快速的應用原型開發(fā)工具 ?? ,那么Meteor一定是一個優(yōu)秀的選擇 ?? 坪仇。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末杂腰,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子椅文,更是在濱河造成了極大的恐慌喂很,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皆刺,死亡現場離奇詭異少辣,居然都是意外死亡,警方通過查閱死者的電腦和手機羡蛾,發(fā)現死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門毒坛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人林说,你說我怎么就攤上這事煎殷。” “怎么了腿箩?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵豪直,是天一觀的道長。 經常有香客問我珠移,道長弓乙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任钧惧,我火速辦了婚禮暇韧,結果婚禮上,老公的妹妹穿的比我還像新娘浓瞪。我一直安慰自己懈玻,他們只是感情好,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布乾颁。 她就那樣靜靜地躺著涂乌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪英岭。 梳的紋絲不亂的頭發(fā)上湾盒,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機與錄音诅妹,去河邊找鬼罚勾。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的尖殃。 我是一名探鬼主播丈莺,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼分衫!你這毒婦竟也來了场刑?” 一聲冷哼從身側響起般此,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蚪战,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后铐懊,有當地人在樹林里發(fā)現了一具尸體邀桑,經...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年科乎,在試婚紗的時候發(fā)現自己被綠了壁畸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡茅茂,死狀恐怖捏萍,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情空闲,我是刑警寧澤令杈,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站碴倾,受9級特大地震影響逗噩,放射性物質發(fā)生泄漏。R本人自食惡果不足惜跌榔,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一异雁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧僧须,春花似錦纲刀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至驱闷,卻和暖如春耻台,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背空另。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工盆耽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓摄杂,卻偏偏與公主長得像坝咐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子析恢,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內容