如何在客户端之间共享代码(浏览器,iPhone,Android)

时间:2012-03-03 18:47:13

标签: ruby-on-rails ios git cordova ember.js

一个应用程序有三个客户端(桌面,iOS,Android),基于Ember.js。 '桌面'客户端是ember和Rails视图的混合体。手机应用程序包含在Phonegap中。服务器端是使用资产管道的Rails应用程序。

三个客户端之间有一些共享代码。在git,资产打包,存储库和代码级共享方面处理这个问题的好方法是什么(例如某些继承自普通类的组件的iPhone'类')?

关于存储库我想有三个主要选项:

  • 为每个客户端使用一个存储库,并包含来自第四个存储库的共享代码
  • 一个用于客户端的存储库,一个用于Rails [服务器端]应用程序
  • 一切存储库

对于资产处理,一些事情也是共享的,例如:最小化,压缩,串联等虽然也有一些差异(gzip在手机客户端没有意义)。

您如何建议我在三个客户之间共享代码?

2 个答案:

答案 0 :(得分:3)

我的意见是,如果您打算最大化代码重用,您不应该想到三个不同客户端有三个应用程序。我认为它是一个具有不同代码路径的应用程序,具体取决于访问它的客户端。

当然,它最终取决于您拍摄的代码重用程度。模型通常最容易分享。根据您的UI的不同,您可能会发现共享控制器和视图很困难。

我将尝试回答一些具体问题......

<强> GIT中

重用代码的最简单方法是只拥有一个应用程序和存储库。否则,您可以利用Git子模块在回购中共享代码。

资产包装

这在很大程度上取决于您选择的资产包装解决方案。使用单个app / repo,如果您担心JS资产规模,则必须配置资产打包系统,以便为每个客户端执行优化构建。有了多个应用/回购,每个应用/回购都会拥有自己的配置。

代码共享

我认为Ember与其他框架相比最大的优势之一是它强大的对象模型。必要时,您可以轻松地将公共对象子类化以添加特定于客户端的行为。

答案 1 :(得分:0)

这是一个单一的项目,它应该是一个单一的存储库