Лучший способ организации внутренних процессов (Node) и внешнего интерфейса (Vue / Nuxt), который использует часть этих процессов - PullRequest
1 голос
/ 23 мая 2019

У меня есть несколько крошечных узловых приложений, выполняющих некоторые базовые вещи, такие как проверка вещей и заполнение моей БД (запускается CRON). В моем приложении Nuxt мне нужно будет использовать часть этих приложений Node. Каков наилучший способ организовать это, разделить их или объединить с моим приложением Nuxt? Копирую ли я то, что мне нужно, из этих приложений узлов и адаптирую их в Nuxt, использую промежуточное ПО на стороне сервера для добавления этих приложений узлов в свой проект Nuxt или я создаю свое приложение Nuxt с помощью Express, и я использую /server/index.js для каким-то образом добавить туда мои приложения-узлы?

Давайте рассмотрим пример. У вас есть приложение для узла, которое проверяет некоторые данные и заполняет базу данных. В приложении Nuxt у вас есть страница, показывающая содержимое БД, но вы хотите сначала убедиться, что ничего нового не должно быть добавлено в БД с последнего часа. Код, который я должен был бы запустить на каждой странице Nuxt, является тем же кодом, что и приложение Node (проверьте и заполните БД). Это выглядит немного глупо (и трудно поддерживать и обновлять), чтобы иметь два одинаковых кода в двух местах. Но я не уверен, как бы я мог запускать это приложение для узла каждый час в моем приложении Nuxt. Любой совет будет принята с благодарностью

1 Ответ

0 голосов
/ 24 мая 2019

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

  1. На вашем сервере есть каталог services (также может называться middleware).
  2. Включите файл cron.js, содержащий логику для обработчика задач.
  3. В cron.js введите запланированный ответ от узла к Vue, например ключевое слово JSON, например res.JSON({message: 'checkNewData'}). Это будет нечто, называемое «событие отправлено сервером». Отправленное сервером событие - это просто событие, которое происходит автономно по заданному расписанию в среде узла.
  4. В Vue на корневом уровне App.vue используйте хук created() для регистрации прослушивателя событий, который будет прослушивать отправленный сервером "checkNewData" объект JSON. Когда этот прослушиватель событий слышит ответ JSON, он должен запустить Vue, чтобы проверить соответствующий компонент, упаковать все новые данные и отправить их в БД при вызове http post или put, в зависимости от того, добавление новых данных или замена старых новыми.

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

...