Author Topic: Одностраничный сайт vs ммногостраничный  (Read 239 times)

Offline cetsalcoatle

  • Герой
  • *
  • Posts: 4164
  • Карма: +349/-277
  • Благородный муж прям и твёрд, но не упрям.
    • View Profile
React позволяет создать удобный сайт на одной странице, но как быть когда контента очень много, например, сайт по изучению языков?

В редакторе кода всё идёт сплошным массивом и очень неудобно править блоки и контент. Есть для этого какое-то решение?

Или можно создать несколько html страниц и они будут рендериться одновременно? :what?
Останься прост, беседуя с царями,
Останься честен, говоря с толпой;
Будь прям и тверд с врагами и друзьями,
Пусть все, в свой час, считаются с тобой;

Simba mwenda pole ndiye mla nyama

Offline Квас

  • Ветеран
  • *****
  • Posts: 1315
  • Карма: +380/-9
    • View Profile
Решение называется "декомпозиция", один из основных принципов программирования. :) Даже одну огромную страницу можно собрать по частям, так что каждая часть будет небольшой. С другой стороны, SPA и не предполагает, что сайт выглядит, как одна страница. Обычно он выглядит как нормальный сайт с разными страницами и переходами по ссылкам. Только на переходах страница не "мелькает", как на SMF форуме.

Offline Квас

  • Ветеран
  • *****
  • Posts: 1315
  • Карма: +380/-9
    • View Profile
Или можно создать несколько html страниц и они будут рендериться одновременно? :what?

Я бы сказал, что реакт не предполагает мышления в терминах html-страниц. Его основной элемент - компонент. Конечно, некоторые компоненты могут соответствовать целым страницам и могут связываться с маршрутами. Но это частный случай.
« Last Edit: 06 May 2024, 22:49:33 by Квас »

Offline cetsalcoatle

  • Герой
  • *
  • Posts: 4164
  • Карма: +349/-277
  • Благородный муж прям и твёрд, но не упрям.
    • View Profile
Спасибо. :)
Останься прост, беседуя с царями,
Останься честен, говоря с толпой;
Будь прям и тверд с врагами и друзьями,
Пусть все, в свой час, считаются с тобой;

Simba mwenda pole ndiye mla nyama

Offline Квас

  • Ветеран
  • *****
  • Posts: 1315
  • Карма: +380/-9
    • View Profile
В общем и целом, реакт отслеживает, что изменяется на странице, и перерисовывает только изменения. Например, страница может состоять из хедера, футера и тела. И предположим, что при нажатии на кнопку тело меняется: например, это будет другой компонент. Тогда реакт, со своей стороны, перерисует тело, а хедер и футер оставит. С точки зрения пользователя это похоже на то, что открылась новая страница, но без мелькания, и хедер и футер не меняются.

Более того, из JS можно управлять историей браузера. На нижнем уровне это называется History API. Также существуют обёртки для библиотек/фреймворков: например, React Router для голого реакта, а в next.js встроен свой роутер. Они позволяют эмулировать многостраничный сайт с точностью до адресной строки. Например, когда пользователь кликает на ссылку, роутер, с одной стороны, заменит компонент тела страницы, а с другой стороны - заменит адрес в адресной строке. Так с точки зрения пользователя сайт получается многостраничный (только быстрее и без мелькания). При этом страница в действительности не перегружается, то есть сайт остаётся SPA.