Один исполняемый файл с Python и React.js

У меня есть два приложения

  • Приложение response.js + node.js.
  • автономное приложение python

    Мне нужно объединить эти два приложения и распространять это одно приложение в одном исполняемом/двоичном. Я понимаю, что мне нужно избавиться от node.js и использовать python в качестве моего бэкэнд и изменить вызовы, идущие от реагирующего узла до реакции-питона. И для последнего мне нужно принести, может быть, Flask.

    Для упаковки я могу использовать PyInstaller или cx_freeze.

    Любые указатели, что это лучший способ сделать это слияние и создать единый исполняемый/двоичный файл, чтобы конечный рабочий процесс был следующим:

    1) Пользователь получает один исполняемый/двоичный файл

    2) Запускает/Выполняет исполняемый/двоичный файл

    3) Это запускает приложение, доступ к которому можно получить в браузере.

    4) Пользователь сможет отправить запрос из UI (React) в Backend (Python)

    Таким образом, в основном один исполняемый/двоичный код имеет код python env, python backend и response (UI).

Ответ 1

Вы можете использовать эту структуру дизайна для решения этой проблемы, как и все языки, вам нужно упаковать внешний интерфейс в общую папку вашего внутреннего проекта:

.
└── project_template/
    ├── server/
    └── static/
        ├── css/
        ├── images/
        └── js/

Этот шаблон проекта может быть репозиторием npm, в котором вы можете настроить скрипт для запуска вашего проекта.

Пример с реакцией и узлом (вы можете увидеть peoject на GitHub):

{
  "name": "poker-hand-analyzer",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "install-frontend-dependencies": "cd ./frontend && yarn install",
    "install-backend-dependencies": "cd ./backend && yarn install",
    "install-dependencies": "yarn install-frontend-dependencies && yarn install-backend-dependencies && yarn install",
    "frontend": "cd ./frontend && yarn start",
    "backend": "cd ./backend && yarn start",
    "start": "concurrently \"yarn frontend\" \"yarn backend\""
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/brunoxd13/poker-hand-analyzer.git"
  },
  "author": "Bruno Russi Lautenschlager",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/brunoxd13/poker-hand-analyzer/issues"
  },
  "homepage": "https://github.com/brunoxd13/poker-hand-analyzer#readme",
  "dependencies": {
    "concurrently": "^4.1.0"
  }
}