Предположим, я создаю довольно большое браузерное интерактивное мультимедийное приложение, и у меня есть следующие требования:
- Только для Webkit (допустим, хром на рабочем столе)
- версии для планшетов и настольных ПК, возможно, с небольшими отличиями в интерфейсе пользователя
- Полностью на стороне клиента: никакого взаимодействия с сервером вообще
- Наилучшая производительность возможна
- Полностью интернационализированный
- Я собираюсь создать много этих приложений
- Долгосрочная ремонтопригодность НЕ является приоритетом (здесь нет TDD)
- Повторное использование и использование от проекта к проекту является приоритетом
- Дизайнеры правят насестом - много времени будет потрачено на внешний вид и анимацию
- Очень короткие сроки разработки
- Маленькая, блестящая команда
Я ищу совета от людей, которые уже делали что-то подобное, чтобы не сделать неправильный выбор заранее.
Я знаю JS & CSS3 как внутри, так и снаружи, но я достаточно умен, опытен и стар, чтобы знать, что есть преимущества в использовании архитектурной среды, которую кто-то другой разработал, вместо того, чтобы использовать мою собственную. Однако эти преимущества вступают в силу только в том случае, если приложения, которые я пишу, соответствуют целям разработчика платформы.
Я потратил день, пытаясь разобраться в SenchaTouch, и пришел к выводу, что он отлично подходит для создания чего-то совершенно отличного от того, что я строю. (По аналогии SenchaTouch / ExtJS - это Swing, и я ищу Flash.) Кроме того, у Sencha, похоже, много трудностей, чтобы превратить Javascript в систему на основе классов, вместо того, чтобы просто принять / принять, что это прототип система. Это меня подвело.
Я провел целый день, изучая все о backbone.js, и мне действительно это нравится, за исключением 1) Мне не нужны ЛЮБЫЕ вещи взаимодействия с сервером (хотя я мог бы использовать это для начальной загрузки всех элементов пользовательского интерфейса из файлы ресурсов), и 2) он полностью игнорирует актуальность представлений. Но, может быть, это хорошо? Я не уверен в этом.
Я смотрел на knockout.js и, хотя он очень беспокоится о том, чтобы поддерживать представления в актуальном состоянии, ни одна из демонстраций, которые я смотрел, не затрагивала интернационализацию. Мои потребности в i18n просты: каждая текстовая строка, которая появляется в моем приложении, должна исходить из таблицы (и используемый язык можно изменить в любое время). Когда я вижу что-то подобное на домашней странице knockout.js:
optionsCaption="choose..."
Я беспокоюсь о том, как легко будет сделать эту строку динамической, основываясь на настройке переменной времени выполнения. То есть, если бы я хотел написать эквивалент:
optionsCaption=l10n("choose")
Существует ли достаточно безболезненный способ сделать это, и что связано с тем, что смена языка автоматически распространяется по всему пользовательскому интерфейсу?
Любая убедительная рекомендация, чтобы я посмотрел на еще одну структуру, которая может быть лучше подходит?
Кроме того, я предполагаю, что мы будем использовать jquery / ui или zepto, возможно, zepto, чтобы исключить множество шаблонов в динамическом обновлении страниц и анимации. Есть какие-нибудь полезные мысли об этой части архитектуры?