Веб-приложения — как динамически представлять объявления

#database #web-applications

#База данных #веб-приложения

Вопрос:

Я разрабатываю веб-приложение, на странице которого отображаются обновления и объявления. Я не знаком с тем, как другие веб-сайты выполняют это. Люди хранят свои объявления / обновления в базе данных и просто обновляют свою базу данных всякий раз, когда у них появляется новое объявление?

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

Комментарии:

1. Должны ли пользователи видеть объявление каждый раз, когда они посещают сайт, или только один раз (например, уведомление).

2. @moeassal Я планировал создать на своем веб-сайте страницу «Обновления», на которой будет отображаться информация об исправлениях и планах на будущее для веб-сайта, а также предоставить пользователям возможность оставлять отзывы о последних изменениях. Пользователи не будут получать уведомления, но смогут посетить эту страницу, чтобы увидеть последние изменения. Я подумал, что жесткое кодирование обновлений в HTML страницы может быть неустойчивым, поэтому я подумал, что их следует откуда-то загружать. Мне было любопытно, как более крупные веб-сайты делали это в масштабе (поскольку на многих сайтах есть страницы «Объявлений» и тому подобное).

3. Я думаю, вы не знаете концепцию «рендеринга». Как вы управляете своим сервером? Какой язык программирования вы используете? Или, может быть, ваш вопрос теоретический, не так ли?

4. @moeassal Это скорее теоретически (вы можете использовать сервер NodeJS Express, если хотите). Мой вопрос заключается в том, что если у вас есть страница объявлений, которая требует частых изменений вручную, должна ли информация, заполняющая эту страницу объявлений, храниться в какой-либо базе данных, на которую администратор может отправлять обновления, или жестко закодирована в HTML страницы (или что-то еще)? Жесткое кодирование это кажется плохой практикой, но необходимость отправлять обновления в базу данных всякий раз, когда вы хотите добавить новое объявление, кажется мучительной.

5. Я бы настоятельно рекомендовал использовать базу данных и иметь модераторов, которые управляют обновлениями и объявлениями, как предлагает @moe. Обновления могут, например, находиться в таблице с UpdateID, updateTitle, updateMessa&e, UpdateStartDate и UpdateEndDate. Обновления будут отображаться между двумя датами, а затем автоматически исчезнут после даты окончания. И если объявления необходимо просмотреть хотя бы один раз, прежде чем исчезнуть, создайте таблицу, более похожую на AnnouncementID, AnnouncementTitle, AnnouncementMessa&e, а затем создайте ссылку на таблицу пользователей с флагом «да» / «нет» в таблице соединителей.

Ответ №1:

По сути, вам нужен серверный сервер, который запускает порт websocket для привязки клиентов. Чтобы клиент отправил свой запрос на публикацию объявления, это может быть сделано через веб-сокет или любой другой API (REST, SOAP, GraphQL).

Затем сервер может сохранить объявления в своей базе данных или / и отправить всем подключенным клиентам уведомление о том, что объявление было добавлено через порт websocket. Затем клиент может обработать ответ от сервера в соответствии со своей логикой.

Чтобы получать объявления для клиентов, которые не были подключены на момент объявления через websocket, вы можете просто ответить всеми объявлениями, сделанными после отключения клиента.

Комментарии:

1. Это лучший ответ. Websockets обычно используется правильно, когда вы хотите «отправить» данные клиенту. С решениями на основе клиентских запросов вам необходимо отслеживать последние полученные уведомления каждого клиента и устанавливать пороговые значения для выбора уведомлений, которые следует предоставлять, когда они попадают в конечную точку запроса. Вы также обычно хотели бы включить их в загрузку страницы. Другим источником, на который вы могли бы обратить внимание, было бы developer.mozilla.or&/en-US/docs/Web/API/Notifications_API /…

Ответ №2:

Существует множество возможных решений, все с разной степенью сложности и гибкости:

1. Жестко закодируйте все на своей HTML-странице

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

2. Сохраните список в выделенном источнике данных

Например, создайте в своем проекте файл JSON со следующей структурой:

 [
  { 
    "type": "announcement",
    "date": "2020-08-18",
    "title": "New announcement!",
    "content": "Bla bla bla...",
  },
  { 
    "type": "update",
    "date": "2020-08-18",
    "title": "Version 2.1.0",
    "content": "Here is the chan&elo&: ...",
  },
]
  

Затем ваше веб-приложение может загрузить этот файл и отобразить его соответствующим образом. Этот подход имеет некоторые преимущества:

  • Вам не нужно каждый раз переписывать весь шаблонный html
  • Изменения на странице обновления зафиксированы, поэтому их легче просмотреть или отменить

Однако вам все равно нужно вставить html в ваше content поле, и это может быть проблематично делать каждый раз вручную (особенно если вам нужно добавить изображения, таблицы или более сложные элементы). Кроме того, изменения вносятся в кодовую базу, поэтому их нельзя делегировать специалисту, не занимающемуся техническими вопросами (например, менеджеру по маркетингу).

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

3. Сохраните список вручную в базе данных

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

4. Используйте базу данных и реализуйте графический интерфейс для создания / редактирования / публикации объявлений

Идеальным решением является использование базы данных с одновременной реализацией в серверной части ограниченной области, где можно управлять объявлениями с помощью редактора WYSIWYG.

Преимущества:

  • Максимальная гибкость, и для этого не требуется каждый раз писать HTML вручную
  • Написать и опубликовать объявление может любой, это не обязательно должен быть разработчик

Недостатки:

  • Вам необходимо разработать всю систему редактирования / публикации

Ответ №3:

Я не знаю, какой ваш язык программирования или технологии вы используете. Но, я полагаю, вам нужны обновления и объявления в реальном времени. Я предлагаю вам использовать базы данных реального времени, такие как FCM, для обработки этого: https://firebase.&oo&le.com/docs/cloud-messa&in&/concept-options?hl=id

В этом примере он использует NodeJS:

https://thecodebarbarian.com/sendin&-web-push-notifications-from-node-js.html

Ответ №4:

Это зависит от того, как вы хотите с этим справиться. Некоторые используют этот метод хранения в базе данных и ее обновления.

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

Ответ №5:

Стандартным методом размещения текста на веб-страницах без его жесткого кодирования является использование системы управления контентом или CMS. Это может быть большим и сложным, или простым и легковесным.

Подход, который, как я видел, работает лучше всего, заключается в использовании «безголовой CMS», которая предоставляет нетехническим пользователям пользовательский интерфейс для ввода контента и API, который позволяет вашему приложению захватывать этот контент (например, в формате JSON) и отображать его в любой используемой вами среде. Это работает для «Объявлений» или другого текстового содержимого, такого как часто задаваемые вопросы, правила и условия и т.д.

Другой подход заключается в использовании «генератора статических сайтов», который принимает текст в определенном формате и выдает его в виде HTML. Вы могли бы использовать это для построения конвейера для приема «объявлений», написанных в markdown и переданных в Git, которые преобразуются генератором статического сайта в HTML-фрагмент, который затем визуализируется с помощью вашего приложения NodeJS.

Ответ №6:

Как говорилось ранее, CMS (система управления контентом), вероятно, является правильным решением. Если вы еще не решили, как создать свое веб-приложение, я бы настоятельно посоветовал вам использовать веб-фреймворк.

Если вы ищете хорошее решение, я бы порекомендовал Djan&o и Djan&o CMS. Оба хорошо документированы, имеют открытый исходный код и могут масштабироваться по мере необходимости.

Djan&o:

https://docs.djan&oproject.com/en/3.1/contents/

Djan&o CMS:

http://docs.djan&o-cms.or&/en/latest/