Ответы пользователя по тегу React
  • Как интегрировать логику из react в vue?

    Попробуйте https://github.com/akxcv/vuera
    Но вообще, 350 строк можно и переписать.
    Ответ написан
  • Нормально ли совмещать фреймворк Bootstrap 4.6 с библиотекой react-boostrap?

    Это абсолютно нормально - использовать имеющиеся в react-bootstrap компоненты и реализовывать те, что в этой библиотеке отсутствуют.

    Используя react-bootstrap вы уже используете оба пакета https://react-bootstrap.github.io/getting-started/...
    Ответ написан
    Комментировать
  • Как правильно использовать NPM пакеты в React приложении?

    Если бездумно фигачить по принципу "так что там у нас бутстрап сейчас воткнем (плевать что дизайн совсем не про бутстрап), фонтавесоме сразу весь из-за 2 иконок, жиквери чо бы нет" то конечно будет "перегруз".

    Я задаю себе 3 вопроса:

    1) Могу ли я "сделать руками" лучше/быстрее/надёжнее/легче того, что есть в npm?
    2) Достаточна ли имеющаяся библиотека (плагин)? Не избыточна ли она?
    3) Сколько будет стоить разработка и отладка своего решения?

    Так что всё индивидуально. Надо подходить взвешено, разбираться. Например, есть такая либа для работы с датами moment.js. Оказывается, он тащит в бандл сразу все локализации. Можно найти как это поправить на уровне конфига вебпака (если не изменяет память). А если еще чуток поискать, то можно найти более современный и удобный date-fns и импортнуть из него только нужную функцию.

    И https://www.npmjs.com/package/webpack-bundle-analyzer в помощь, оценить вес модулей в общем объёме бандла
    Ответ написан
    1 комментарий
  • Каковы best practice по использованию React вместе с PHP-шаблонизаторами (Blade, Twig)?

    Есть опыт с Vue в похожей ситуации, суть та же самая.

    Где-то в шаблонах формируется контейнер для компонента, в атрибутах которого передаются пропсы для компонента:

    <div 
      data-component="ComponentName"
      data-component-props='{ "id": "123", "foo": "bar" }'
    >
    </div>


    Где-то в Component.js происходит инициализация компонента:

    // псевдо-код
    const el = получили элемент с data-component="ComponentName" или с каким-то id и т.д.
    const props = спарсили пропсы из атрибута 
    const app = отрендерили React-компонент в этом жлементе передав ему пропсы


    С Vue ранее еще пробовали инициализировать приложение прямо на body и использовать кастомные теги для компонентов, но выходило хуже, с пропсами было неудобно.

    Из известных крупных сайтов Lamoda например делает что-то подобное. Поищите по исходному коду страницы товара <div class="vue-widget">

    С SEO быть или никак, или заполняя будущий контейнер для компонента голым сеошным текстом и потом его замещая рендером компонента. Скорее всего, реакт вы будете использовать для динамических вещей - формы, конструкторы, корзина и т.д., которым сео не нужно.

    По опыту использования такого подхода на нескольких средних проектах могу сказать, что подход рабочий. Писать динамические компоненты на Vue гораздо удобнее. Мы написали что-то вроде недо-микро-фреймворка для удобного биндинга vue и не-vue компонентов https://github.com/interfacesdev/nospa Внутри у себя используем, но рекомендовать к вашему продакшену не могу - документация не закончена, поддержки нет, на гитхаб пока просто выдернули актуальную версию с прошлого проекта. Может когда-то руки дойдут заняться плотнее.

    А в целом значительно удобнее писать фронт полностью на Vue/React, используя, например, Next/Nuxt для рендеринга и все эти по сути костыли просто от безысходности :( Но это уже тема отдельной дискуссии.
    Ответ написан
    1 комментарий
  • Нужен ли вообще этот server side rendering?

    Серверный рендеринг нужен чтобы:
    1. Пользователь получил уже отрендеренный интерфейс, вроде как быстрее, приятнее и т.д. - на мой взгляд такое себе преимущество
    2. Для индексации поисковиками - главное и основное

    Рендерьте на сервере те компоненты, индексация которых важна. Всякие ГуглоКарты, корзины интернет-магазинов и прочее рендерить не надо.
    Не надо индексироваться - не мучайте ни себя, ни Тостер.
    Ответ написан
    3 комментария
  • Динамические части сайта + сео?

    Я бы:
    - Оставил генерацию страниц как есть, на сервере.
    - Отдельные функциональные блоки реализовал с помощью Vue
    Например, на странице товара заголовок, описание, фото - отдается сразу в HTML с сервера.
    А кнопка добавления в корзину - это уже компонент Vue.

    Так же к компонентам: корзина, личный кабинет, виджет корзины в шапке, фильтр в каталоге ну и т.д.

    Почему Vue?
    Потому что в минимальном варианте просто подключил и работает, можно сделать 1 компонент, посмотреть как и что без какой-либо настройки workflow.

    Иначе вам нужно будет по сути новый сайт сделать:
    - Полноценное API
    - Полноценное SPA
    - Ещё один бэкэнд, чтобы реализовать SSR ( vuejs.org/v2/guide/ssr.html )
    Стоит ли оно того?
    Ответ написан
    1 комментарий