2012-03-03 48 views
3

一個應用程序有三個基於Ember.js的客戶端(桌面,iOS,Android)。 '桌面'客戶端是一個混合的燼和Rails視圖。手機應用程序被封裝在Phonegap中。服務器端是使用資產管道的Rails應用程序。如何在客戶端(瀏覽器,iPhone,Android)之間共享代碼

這三個客戶端之間有一些共享代碼。在git,資產包裝,存儲庫和代碼級別共享(例如,某些組件從一般類繼承的一個iPhone'類')方面,處理此問題的好方法是什麼?

關於庫我想主要有三種選擇:

  • 使用一個儲存庫爲每個客戶端,並且包括從第四儲存庫
  • 爲客戶一個存儲庫中,一個共享的代碼滑軌[服務器端]應用程序的一切

而對於資產處理一些事情

  • 一個資料庫共享過,如最小化,壓縮,串接等,雖然也有一些差異(gzip在手機客戶端沒有意義)。

    您會如何建議我在三個客戶端之間共享代碼?

  • 回答

    3

    我的意見是,如果您打算最大限度地重複使用代碼,您不應該想到三個不同客戶端有三個應用程序。我會認爲它是一個具有不同代碼路徑的單個應用程序,具體取決於哪個客戶端正在訪問它。

    當然,它最終取決於您要拍攝的代碼重用級別。模型通常是最容易分享的。根據您的用戶界面的不同,您可能會發現很難共享控制器和視圖。

    我要試圖回答一些具體的問題...

    的Git

    重用代碼的最簡單方法是隻是有一個單一的應用程序和存儲庫。否則,您可以利用Git子模塊在代碼庫中共享代碼。

    資產包裝

    這在很大程度上取決於您選擇的資產包裝解決方案。如果您擔心JS資產大小,只需一個應用/回購,您就必須配置您的資產打包系統,以便爲每個客戶端優化構建。有了多個應用程序/回購,每個人都可以擁有自己的配置。

    代碼共享

    我認爲,相對於其他框架灰燼的最大的優勢之一是它的強大的對象模型。必要時,您可以輕鬆子類化一個通用對象來添加客戶特定的行爲。

    0

    這是一個單一的項目,它應該是一個單一的倉庫

    相關問題