Различия в архитектуре проектов для интеграции Django + Vuejs (или других)
В настоящее время я рассматриваю настройки проекта для проекта Django + Vuejs (хотя я полагаю, что вопрос, вероятно, столь же актуален для других фронтендов, react, svelte и т.д.).
Похоже, есть в основном 2 подхода, которые часто встречаются, что приводит к следующей структуре проекта:
Фронтенд, встроенный в проект Django (возможно, как подмодуль git):
root
├── djangoapp
├── djangoproject
├── manage.py
├── requirements.txt
├── static
├── venv
└── vueproject
├── node_modules
├── package.json
├── public
└── src
Другой подход заключается в том, чтобы располагать их на одном уровне от корня проекта, как 2 отдельных проекта (или, я думаю, оба могут быть git-подмодулями к "оберточному" проекту), так что по существу:
root
├── djangoproject
│ └── <django files & folders>
└── vueproject
└── <vue files & folders>
При втором подходе, похоже, вы рассматриваете Django только как API. Такие вещи как collectstatic не (?) вступают в игру. При разработке вам нужен сервер, обслуживающий Django api, и сервер dev для vue frontend.
При первом подходе (если я правильно понимаю), похоже, что вы собираете статические файлы Vue, а затем управляете всем этим с помощью управления статическими файлами Django's collectstatic/static files.
Кажется, что 2-й подход лучше развязывает эти два компонента. В первом случае вам нужно настроить vue (или vite) довольно специфично, а также статические файлы Django. Что мы получаем, делая это, для меня не очевидно - чем больше я думаю об этом, тем больше кажется очевидным, что 2-й подход лучше.
Какие потенциальные преимущества были бы в первом подходе? Удобства для разработчиков, которых я не вижу? Более легкое развертывание? Или это просто несколько устаревший подход, который все еще витает в сети?