一个应用程序有三个客户端(桌面,iOS,Android),基于Ember.js。 '桌面'客户端是ember和Rails视图的混合体。手机应用程序包含在Phonegap中。服务器端是使用资产管道的Rails应用程序。
三个客户端之间有一些共享代码。在git,资产打包,存储库和代码级共享方面处理这个问题的好方法是什么(例如某些继承自普通类的组件的iPhone'类')?
关于存储库我想有三个主要选项:
对于资产处理,一些事情也是共享的,例如:最小化,压缩,串联等虽然也有一些差异(gzip在手机客户端没有意义)。
您如何建议我在三个客户之间共享代码?
答案 0 :(得分:3)
我的意见是,如果您打算最大化代码重用,您不应该想到三个不同客户端有三个应用程序。我认为它是一个具有不同代码路径的应用程序,具体取决于访问它的客户端。
当然,它最终取决于您拍摄的代码重用程度。模型通常最容易分享。根据您的UI的不同,您可能会发现共享控制器和视图很困难。
我将尝试回答一些具体问题......
<强> GIT中强>
重用代码的最简单方法是只拥有一个应用程序和存储库。否则,您可以利用Git子模块在回购中共享代码。
资产包装
这在很大程度上取决于您选择的资产包装解决方案。使用单个app / repo,如果您担心JS资产规模,则必须配置资产打包系统,以便为每个客户端执行优化构建。有了多个应用/回购,每个应用/回购都会拥有自己的配置。
代码共享
我认为Ember与其他框架相比最大的优势之一是它强大的对象模型。必要时,您可以轻松地将公共对象子类化以添加特定于客户端的行为。
答案 1 :(得分:0)
这是一个单一的项目,它应该是一个单一的存储库