2014-01-23 22 views
14

對於製作爲什麼我應該「捆綁」流星應用程序,而不是僅複製 服務器上的源使用「meteor」命令?「meteor」vs「meteor bundle」用於製作

基本上是有什麼區別:

  • 「流星束app.tar.gz」,然後安裝光纖的正確版本和的NodeJS 和提取存檔,並與「節點main.js開始「應用程序,

  • 和複製服務器上的項目來源,只是寫作‘流星’開始 的應用程序?

+1

我不能回答你的問題,但有一點我觀察到當我面臨這個決定時,運行流星使用更多的CPU週期在服務器上比啓動捆綁(node.js )。流星花費的CPU時間量似乎也與項目(反應式)目錄中的文件數成正比。所以我懷疑meteor是否一直在監視目錄中的變化,而運行的bundle不會。另外,對於它的價值,我遇到了「meteor --production」的穩定性問題,但與捆綁無關(儘管我也升級了node.js)。 –

回答

14

這會不會是一個詳盡的清單,但這裏有一些東西,在meteor命令執行:

  1. 在您的應用程序或在每一個相關的文件
  2. 表創建一個本地數據庫你的包
  3. 發送每個文件分開和未分配給客戶端(這是超級低效,除非你在本地開發)

相反,捆綁的應用程序:

  1. 不創建一個本地數據庫
  2. 不花CPU看你的文件更改
  3. 創建兩個縮小的文件(JS和CSS),它是完美的推杆在CDN上或從reverse proxy託管。這些對於客戶來說也是有效的下載並且可高度緩存。

一般來說,如果您使用一套好的scripts,部署不應該是一個巨大的痛苦。

+1

如果你運行「meteor run --production」你的文件被縮小了,我不確定,但我認爲在這種模式下熱碼重新加載也被禁用 – Rebolon

+1

不,在生產模式下也啓用熱推重新加載。這對於軟件更新生產中的客戶端非常有用,以確保它們始終處於最新版本 – imslavko

+4

如果您託管的應用程序數量不是很多,似乎'流星運行 - 生產'與捆綁產品完全不同用戶,你可以省去CPU觀看(除此之外,操作系統支持,不支持輪詢)。 –

1

當使用捆綁:

  1. 它不會產卵流星蒙戈(MongoDB的內流星)
  2. 沒有熱重載
  3. 流星不會看你的文件。
  4. 您可以離開/退出服務器而不會中止您的應用程序。
  5. 您可以使用pm2或其他類似的npm包來平滑地管理節點進程。
  6. 您可以決定將mongoDB放在哪裏並決定使用哪個端口。
  7. 您可以通過無需運行流星應用程序遠程連接到您的mongodb。

在使用副本或項目目錄中運行流星命令:

  1. 你不能離開/退出服務器,同時保持該項目不使用任何屏幕多路複用器運行(例如tmux)
  2. 您只能使用在localhost中產生的流星分配的mongodb:3001 - 如果流星使用的是端口3000.
  3. 您正在讓流星觀察使用CPU的文件更改。
  4. 當你的應用程序死亡,你的數據庫死亡。 :)
+0

嗯,如果你使用:
* set MONGO_URL = mongodb:// localhost:27017/<你的mongodb名稱> *,你可以在流星外面託管你的mongo db。你的mongo數據庫將存在於你的應用之外,如果你殺了你的應用,你的數據庫仍然是完全可用的。 –

+0

@ManuelRivera是的,這也是正確的。乾杯! – gone43v3r