Как поделиться кодом между клиентами (браузер, iPhone, Android) - PullRequest
3 голосов
/ 03 марта 2012

Приложение имеет три клиента (рабочий стол, iOS, Android) на основе Ember.js. «Настольный» клиент представляет собой смесь представлений ember и Rails. Телефонные приложения упакованы в PhoneGap. На стороне сервера это приложение Rails, использующее конвейер ресурсов.

Существует некоторый общий код между тремя клиентами. Что может быть хорошим способом справиться с этим с точки зрения git, упаковки ресурсов, хранилищ и совместного использования на уровне кода (например, «класс» iPhone для некоторых компонентов, унаследованных от общего класса)?

Что касается хранилищ, я думаю, есть три основных варианта:

  • Использование одного репозитория для каждого клиента и включение общего кода из четвертого репозитория
  • Один репозиторий для клиентов, один для приложения Rails [на стороне сервера]
  • Один репозиторий для всего

И для обработки активов некоторые вещи тоже являются общими, например, свертывание, сжатие, объединение и т. д., хотя есть и некоторые различия (gzip не имеет смысла в телефонных клиентах).

Как бы вы посоветовали мне поделиться кодом между тремя клиентами?

Ответы [ 2 ]

3 голосов
/ 03 марта 2012

Мое мнение таково, что вам не следует думать о наличии трех приложений для трех разных клиентов, если вы хотите максимально увеличить повторное использование кода. Я мог бы думать об этом как об одном приложении, которое имеет разные пути кода в зависимости от того, какой клиент обращается к нему.

Конечно, это в конечном итоге зависит от того, на каком уровне повторного использования кода вы стреляете. Модели, как правило, проще всего поделиться. В зависимости от того, насколько отличается ваш пользовательский интерфейс, вам может быть сложно обмениваться контроллерами и представлениями.

Я попытаюсь ответить на некоторые конкретные вопросы ...

Гит

Самый простой способ повторно использовать код - это просто иметь одно приложение и репозиторий. В противном случае вы можете использовать подмодули Git для совместного использования кода в репозиториях.

Упаковка активов

Это сильно зависит от того, какое решение по упаковке активов вы выберете. С одним приложением / репо вы должны будете сконфигурировать свою систему упаковки активов, чтобы потенциально выполнять оптимизированные сборки для каждого клиента, если вас беспокоит размер активов JS. При наличии нескольких приложений / репозиториев каждое из них будет иметь свою собственную конфигурацию.

Совместное использование кода

Я думаю, что одна из самых сильных сторон Ember по сравнению с другими средами - это мощная объектная модель. При необходимости вы можете легко создать подкласс общего объекта, чтобы добавить специфичное для клиента поведение.

0 голосов
/ 04 марта 2012

Это один проект, это должен быть один репозиторий

...