Как хранить / обслуживать настраиваемые пользователем шаблоны HTML? - PullRequest
0 голосов
/ 16 февраля 2012

Я хочу предложить функцию, похожую на Tumblr, где вы можете выбрать шаблон, а также настроить HTML вашего шаблона в браузере и сохранить его.

Текущий стек: Mongo, Sinatra (для REST API) для прототипа. Скорее всего, позже перейдем на скомпилированный язык со статической типизацией.

Хотите знать, как лучше всего это сделать. Варианты, которые я рассмотрел:

  1. Сохраните HTML-код в монго и продублируйте его для всех учетных записей пользователей. Таким образом, HTML-код выбранного вами шаблона записывается в ваш аккаунт. Очевидные недостатки неэффективности пространства и необходимость обновления всех пользователей, которые используют этот шаблон (если он не настроен - вы настраиваете его, он становится вашим собственным, и я никогда не буду его трогать), если шаблон изменится.

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

  3. Какая-то сторонняя библиотека? Открыты для предложений здесь.

  4. Файловая система.

Мне нужно будет упаковать эти шаблоны (вставить js и прочее, с чем пользователь не должен сталкиваться), а затем обслуживать их. Любой совет о том, как лучше подойти к этому, очень ценится.

1 Ответ

2 голосов
/ 16 февраля 2012

Ваш подход будет зависеть от того, как часто вы предвидите, что люди настраивают шаблон, а не просто переходят на стандарт. Как насчет гибридного подхода?

То есть, есть поле в пользовательском документе, которое создается лениво (при использовании), в котором либо хранится пользовательский шаблон, либо, возможно, отличается от одного из стандартов (не уверен насчет уровня настройки, который вы планируете разрешить). ).

Тогда вы можете получить поле шаблона, которое вы описали в пункте 2 выше, со «специальной» настройкой для пользовательских шаблонов. Несмотря на то, что вы по-прежнему беспокоитесь о том, чтобы извлекать шаблон каждый раз, у вас есть преимущество в том, что вы знаете, что это некоторые из ваших более преданных пользователей - сохранение поездки в БД может быть выгодным, или вам может быть все равно.

Если вам не нужны 2 поездки в БД для каждого пользователя, тогда вы выбираете подход 2, добавляете пользовательские шаблоны в коллекцию шаблонов и просто ссылаетесь на новый идентификатор для каждого настраиваемого пользователя.

Это уравновешивающее действие - это дополнительные издержки данных с точки зрения извлечения шаблона каждый раз, когда стоит сохранить поездку в оба конца в БД, или вы хотите повысить эффективность с точки зрения данных, которые вы получаете каждый раз за счет нескольких запросов к БД - только вы можете ответить на этот вопрос в зависимости от того, как вы разрабатываете свое приложение и как его используют люди.

Для связанного подхода вы можете взглянуть на Ссылки на базу данных и Схема в документации MongoDB.

...