на привычном мне стэке, но быстро пришло понимание, что новый проект не хотелось бы превращать в спагетти. Посмотрел что нынче используют для фронтенда, понравился vue. Проблема в том, что не очень понятно, как организовать компоненты. Я использовал vue-router и разбил макет страницы на отдельные компоненты, вроде aside, header, footer, menu, userbar ну собственно main с контентом, в который положил router-view. Есть часть данных, который должны быть доступны на всех страницах, например, данные о пользователе, его авторизованности и какие-то еще данные, который общие для компонентов. Из примеров и документации понял, что каждый компонент, силами axios, может получить данные с бэкенда, но тогда получается много запросов к REST API. Где лучше сделать подгрузку данных с бэкенда, чтобы они были доступны глобально во всех компонентах?
Я не специалист, но мб Vuex? Посмотреть в него, если инфы нет — запросить с сервера
но тогда получается много запросов к REST API - тоже столкнулся кстати но думаю это нормально для REST-а если вы в дейсвтителньости тянете множество данных\справочников
Ух, много всего. Некоторый общий шабон проекта даёт vue-cli (только бери новый, версии 3+, а не старый, который всё ещё гуляет по туториалам). Он даст разделение на компоненты-роутер-стор. cli.vuejs.org В плане данных посмотри на хранилище, чтобы иметь центральный "источник истиности" приложения. Ака глобальные переменные на стероидах. В нём в том числе могут лежать данные, которые вы не хотите постоянно запрашивать. vuex.vuejs.org + гугл flux store pattern Апишка в отдельный слой. Маленький примерчик есть здесь, но потом слой значительно вырастит: https://vuex.vuejs.org/guide/structure.html По организации компонентов можно подглядеть здесь: https://vueschool.io/articles/vuejs-tutorials/structuring-vue-components/ А также здесь можно посмотреть идею леаутов: Да и в целом на Nuxt можно посмотреть, что как у них сделано. Те же посредники (мидлвары) https://ru.nuxtjs.org/guide/layouts/ Много запросов, кстати, это не очень плохо, особенно с http/2.
Обсуждают сегодня