У меня есть серверная часть Flask с маршрутами API, к которым обращается одностраничное приложение React, созданное с помощью create-response-app. При использовании сервера разработки create-response-app мой бэкэнд Flask работает.
Я хотел бы обслуживать созданное (использующее npm run build
) статическое приложение React с моего сервера Flask. Сборка приложения React приводит к следующей структуре каталогов:
- build
- static
- css
- style.[crypto].css
- style.[crypto].css.map
- js
- main.[crypto].js
- main.[crypto].js.map
- index.html
- service-worker.js
- [more meta files]
Под [crypto]
я имею в виду случайно сгенерированные строки, созданные во время сборки.
После получения файла index.html
браузер выполняет следующие запросы:
- GET /static/css/main.[crypto].css
- GET /static/css/main.[crypto].css
- GET /service-worker.js
Как мне обслуживать эти файлы? Я придумал это:
from flask import Blueprint, send_from_directory
static = Blueprint('static', __name__)
@static.route('/')
def serve_static_index():
return send_from_directory('../client/build/', 'index.html')
@static.route('/static/<path:path>') # serve whatever the client requested in the static folder
def serve_static(path):
return send_from_directory('../client/build/static/', path)
@static.route('/service-worker.js')
def serve_worker():
return send_from_directory('../client/build/', 'service-worker.js')
Таким образом, статические ресурсы успешно обслуживаются.
С другой стороны, я мог бы включить это со встроенными статическими утилитами Flask. Но я не понимаю, как это настроить.
Достаточно ли надежно мое решение? Есть ли способ использовать встроенные функции Flask для обслуживания этих ресурсов? Есть ли лучший способ использовать приложение create-response-app?
cp -rf /build/static ./static
как часть вашего скрипта сборки ... - person Joran Beasley   schedule 27.05.2017