У меня есть:
- Узел * * Веб-сервер на базе express , который должен работать только на локальной машине пользователя
- An angular клиентское приложение , которое отправляет запросы GET Http на этот локальный веб-сервер для получения данных в JSON и отображения их в браузере
В моей среде разработчиков я запускаю эти следующим образом:
npm run dev
(в каталоге веб-сервера express). Он выдает: «Express сервер прослушивает порт 7000» и готов к приему запросов npm start
(по каталогу клиентского приложения). Это запускает клиентское приложение в браузере. Затем я могу набирать, нажимать кнопки и отображать данные (с веб-сервера).
Я хочу предоставить эту систему конечному пользователю удобным для него способом:
- Целевая среда Windows. В идеале они должны запускать одну установку (например, из MSI-файла).
- Когда установка будет завершена, они смогут запустить систему (как веб-сервер, так и клиентское приложение) с помощью одной команды.
- Конечный пользователь не должен ничего знать об узле, npm, .. et c, и при этом они не должны знать домашние каталоги этих двух компонентов - фактически они могут даже не знать что используется локальный express веб-сервер.
Важна не только удобная установка, но и возможность запуска обоих компонентов системы с помощью одной пользовательской команды. Когда пользователь закрывает клиентское приложение, в идеале веб-сервер express также должен быть закрыт.
Я играл с электроном. js, но, похоже, он не будет развертываться и запустите сервер express, необходимый для электронного приложения. Также прочитайте о nw. js, но я не видел ни одного примера, похожего на мой сценарий.
Я знаю, что может быть ??? Я могу реализовать серверную сторону как один из процессов электронного рендеринга и вместо HTTP использовать межпроцессное взаимодействие (IP C) для связи с клиентским приложением (еще один процесс рендеринга), в котором задействован основной процесс. Однако это потребует существенной доработки этой уже существующей системы, что потребует значительного времени и в настоящее время недоступно.
Возможен ли сценарий развертывания и использования (1, 2, 3 выше) и каковы лучшие инструменты, которые можно использовать для реализации такого сценария развертывания и выполнения?
Не могли бы вы дать ссылку на любую такую реализацию? И / или идеально маленький / полный пример кода?