Версионирование одностраничного веб-приложения на JavaScript? (Строка запроса) - PullRequest
1 голос
/ 06 декабря 2011

У меня есть одностраничное приложение с некоторыми статическими маршрутами, такими как:

example.org/#!/tools/
example.org/#!/stories/story-1/

Это примеры маршрутов, которые не требуют контроля версий. Либо «страница» существует, либо перенаправлена, либо ее не существует.

Но тогда у меня есть другие ресурсы, которые я бы хотел версии (потому что они могут иметь внутренние состояния - обозначены строкой запроса> 10 параметров):

example.org / #! / Tools / население-инструмент / + ? A = b & c = d [...]

Поскольку параметры строки запроса могут со временем меняться (так как инструмент может допускать больше опций), я бы хотел добавить параметр версии к этим "страницам":

example.org / #! / Tools / население-инструмент / +? v = 1.1 & a = b & c = d [...]

Чтобы при переходе пользователя к URL-адресу без каких-либо параметров автоматически добавлялись состояние и версия по умолчанию:

example.org/#!/tools/population-tool/ =>
example.org/#!/tools/population-tool/ + version + default state

В случае, если пользователь решит поделиться / добавить в закладки этот URL, параметр-версия версии всегда позволит мне переназначить параметры из одной версии в другую.

  1. Можете ли вы предложить лучший подход?
  2. Возможно, версия должна быть частью URL для всех маршрутов?

    example.org / #! / v1 / инструменты / популяционном инструмент /

  3. Или, возможно, версионирование строки запроса - неправильный подход вообще? Возможно, у меня должен быть метод, который угадывает правильно "API" на основе заданных параметров?

Спасибо.

1 Ответ

0 голосов
/ 18 июня 2012

Гадание правильного API по параметрам может быть утомительным и приведет к ненужным сложностям в вашей подсистеме маршрутизации. Гораздо понятнее, когда информация о версии четко указана в URL.

Теперь вопрос о том, следует ли придерживаться подхода 1 или 2, во многом зависит от вкуса. По моему мнению, это зависит от того, насколько ощутима версия вашего приложения для конечного пользователя. Если ваш конечный пользователь не воспринимает изменения во внешнем интерфейсе (т. Е. Если вы следуете архитектуре MVC, и это изменение относится только к уровню модели, а уровень представления остается неизменным, то подход 1 более рекомендуется. Где, как если бы он был Для пользователя важно знать, какую версию он использует или если пользовательский интерфейс, видимый для конечного пользователя, отличается в разных версиях, тогда подход 2 является лучшим вариантом, поскольку он помещает информацию о версии в видное место в URL.

Еще один способ взглянуть на это - задать вопрос, отличается ли состояние приложения между версиями. URL (без параметров запроса) представляет состояние приложения, и в случае, если ответ верен, следует придерживаться второго подхода. Однако, если информация о версии абстрагирована от основного кода приложения и относится только к некоторым абстрагированным подразделам, например. следует придерживаться только нескольких модельных классов, а затем подход 1.

...