Meteor Web開發(fā)框架系列

Meteor簡介

Meteor介紹

如果你有仔細觀察最近幾年的Web開發(fā)狀態(tài)的話,你會發(fā)現(xiàn)兩種清晰的趨勢。第一是,Web應(yīng)用越來越強大,且與桌面應(yīng)用的界線也越來越模糊。坦白地說,用戶完全不關(guān)心應(yīng)用后面使用的什么技術(shù),他們只是希望有一個好的用戶體驗,這其中包括點擊時能馬上響應(yīng)、也其它用戶的實時溝通、與其他服務(wù)的記好集成等等。每二個趨勢是如此之快地涌現(xiàn)出大量的語言、庫、工具、框架、工作流等,以至于開發(fā)者們疲于應(yīng)付,無力追趕。

總之,當(dāng)前的Web開發(fā)的現(xiàn)狀是:

  • 用戶希望從應(yīng)用中得到更多方便。
  • 開發(fā)者希望減少使不同的庫能一起正常工作的擔(dān)心,或不再所謂的管道代碼。

Meteor背后的故事

當(dāng)Geoff Schmidt,Matt DeBergalis和Nick Martin接受了Y Combinator創(chuàng)業(yè)種子加速器后,他們計劃建立一個旅游推薦網(wǎng)站。但當(dāng)他們與其他初創(chuàng)公司交談后,他們意識到那些創(chuàng)業(yè)公司是多么的掙扎,盡管他們在Asana工作時已經(jīng)解決了同樣的挑戰(zhàn)。那一個關(guān)于協(xié)同項目和任務(wù)管理的在線平臺。于是,他們改變了計劃,決定創(chuàng)建一個開源平臺,為開發(fā)像桌面應(yīng)用程序那樣樣干滑的Web應(yīng)用提供一個堅實的基礎(chǔ)。

到2011年12月份, Meteor開發(fā)組(Meteor Development Group, MDG) 宣布了第一個開發(fā)預(yù)覽版,名字叫Skybreak,隨后很快被更名為Meteor。僅僅8個月后,該項目已融資了1120萬美元。這些資金來源于行業(yè)大佬們,如如Andreessen Horowitz、 Matrix Partners、Peter Levine(XenSource前首席執(zhí)行官)、Dustin Moskovitz(Facebook聯(lián)合創(chuàng)始人),Rod Johnson(SpringSource創(chuàng)始人)。Meteor的GitHub庫中一直是排名前20最流行的庫之一,在其1.0版本發(fā)布后,排名更是躍至指點11位,比Linux內(nèi)核、Mac OS X的軟件包管理器程序homebrew以及backbone.js擁有更多的star。

為什么Meteor會如此受開發(fā)者的歡迎呢?或許是Meteor不再讓開發(fā)都困于底層基礎(chǔ)代碼的創(chuàng)建,如數(shù)據(jù)同步,讓開發(fā)者專注于開發(fā)業(yè)務(wù)功能。隨著超過1100萬美元的資金注入,投資者發(fā)現(xiàn)Meteor非常具有吸引力。正如類似的情況發(fā)生在Xen(免費的服務(wù)器虛擬化管理程序)、或JBoss(Java的應(yīng)用服務(wù)器),MDG的最終會為企業(yè)市場會提供額外的工具。

The MDG 將項目分為4個部分:

  • 諸如命令行界面(CLI)的工具集。這是像nake一樣的構(gòu)建工具和像node npm一樣的包管理器的混合物。主要為將要發(fā)布的Web和Mobile項目的整體構(gòu)建與管理。

  • 軟件庫的集合。這是一整套核心功能組件包,可被自定義組件包進行擴展或者由 npm安裝的node模塊擴展。

  • 各種協(xié)議的標(biāo)準(zhǔn),如DDP(Distributed Data Protocol)、基于Websocket的數(shù)據(jù)協(xié)議。

  • 服務(wù)。官方的托管服務(wù)、包托服務(wù)器,以及構(gòu)建集群。

所有的Meteor的項目都使用一個統(tǒng)一的接口進行訪問,這樣開發(fā)人員就不需要知道哪些組件構(gòu)成了整個Meteor。

Meteor組件

簡單的說,Meteor是完全使用JavaScript創(chuàng)建豐富的Web應(yīng)用程序的一個開放源碼的平臺。它在一個框架下捆綁和提供了所有需要的功能。它由Node.js、MongoDB、實際的應(yīng)用程序代碼、以及一個強大的命令行工具,組合成了強大的npm和make工具集。因此,它比服務(wù)器進程和庫的組合要強大許多。這也是許多人喜歡把它稱為一個完整的生態(tài)系統(tǒng),而不僅僅是一個框架的原因。但是,即使它超越了其他Web框架提供的功能,在它的核心,它仍然依賴于組件棧來運行應(yīng)用程序。

Meteor的組件棧是MEAN家族的成員,這也意味著在服務(wù)器端Meteor由Node.js驅(qū)動。Node.js是一個事件驅(qū)動的,高度可擴展的運行服務(wù)器上的Javascript運行時環(huán)境,它如同Apache在LAMP(Linux, Apache, MySQL, PHP)中所起的作用一樣。

所有的數(shù)據(jù)通常存儲在MongoDB面向文檔的NoSQL數(shù)據(jù)庫中。Meteor也有支持其他計劃(基于SQL)數(shù)據(jù)庫系統(tǒng)的詩雅,但目前唯一的建議是使用Mongo數(shù)據(jù)庫。MongoDB提供了一個JavaScript API,可以以文檔或?qū)ο蟮男问皆L問所有存儲的內(nèi)容。在瀏覽器中以同樣的語言來訪問數(shù)據(jù),如此一來Meteor可利用此優(yōu)勢實現(xiàn)真正的全棧開發(fā)。

所有從零開始創(chuàng)建Web應(yīng)用程序所需的軟件和庫都以智能包(smart packages)的形式捆綁在Meteor中,因此開發(fā)人員可以更快捷的開始開發(fā)。這些軟件包包括一個響應(yīng)式的用戶界面庫(Blaze),用戶帳戶管理(accounts)等等。Meteor的CLI工具允許開發(fā)者快速建立一個完整的開發(fā)環(huán)境, 而不需要如何安裝或配置服務(wù)器軟件;Meteor完整地接管了開發(fā)應(yīng)用的基礎(chǔ)設(shè)施的方方面面。它同時也是一個構(gòu)建工具,類似于make和grunt,和包管理器,如APT或NPM。比如,它可以快速地編譯那些預(yù)處理語言,如LESS和CoffeeScript,而不需要事先設(shè)置處理流程, 也不需要使用任何命令來為認(rèn)證添加Facebook OAuth組件。最后,CLI工具應(yīng)用程序打包,以使應(yīng)用可以運行在不同的客戶端平臺,如在瀏覽器中運行或用為原生移動應(yīng)用程序運行。

Meteor組件棧的所有部分都無縫集成,所有的核心軟件包經(jīng)過精心設(shè)計和嚴(yán)格測試,以保證它們可正確工作。另一方面,如果需要,它完全有可能切換到其他的組件。在一些情況下,可以不使用Meteor全部組件棧,你可以決定只使用Meteor服務(wù)器組件,然后在客戶端的Angular.js,或者使用java后端,同時使用Meteor前端為所有客戶提供實時更新。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容