Что такое маршрутизация? Почему "маршрутизация" необходима в одностраничных веб-приложениях?

Super newbee вопрос: я ищу в интернете, потому что я хотел бы понять концепцию маршрутизации в веб-приложениях. Пока что интернет еще больше сбивал меня с толку.

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

больше маршрутов, чем это ?

зачем нужна маршрутизация в первую очередь?

Почему URL-адреса важно? Например, в в настольном приложении нет URL-адресов, так в чем же проблема в веб-приложении?

редактировать: Спасибо за ответы, когда я имел в виду веб-приложения, я хотел имею в виду одну страницу веб-приложения, когда я про маршрутизацию я имела ввиду маршрутизации для курортов, как https://github.com/ReactTraining/react-router.

5 ответов


маршрутизация в Спа используется для загрузки определенных частей веб-приложения, например yourappurl.com/profile/userid/ загрузит часть профиля SPA с правильным профилем пользователя, соответствующим идентификатору пользователя. Это можно увидеть в пример GitHub вы предоставили:

<Router history={browserHistory}>
<Route path="/" component={App}>
  <Route path="about" component={About}/>
  <Route path="users" component={Users}>
    <Route path="/user/:userId" component={User}/>
  </Route>
  <Route path="*" component={NoMatch}/>
</Route>

SPA относится к тому, что в целом у вас есть индекс.html как ваш "основной вид", а затем в зависимости от маршрутизации вы добавляете/удаляете определенные части из индекса.html с такими фреймворками, как React или AngularJS так далее.


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

URL-адрес-это путь для доступа к функциональности. Маршрутизация подобна механизму решения, какую функциональность вызывать на основе предоставленного URL и параметров.

таким образом, в основном маршрутизация-это сопоставление между URL и функциональность веб-сервера.


У меня также есть эта проблема: "зачем нам нужна маршрутизация?". Вы можете писать приложения вообще без маршрутизации. Код может запутаться, но все же это не невозможно.

моя самая большая причина маршрутизации заключается в том, что если пользователь нажимает кнопку "Назад" браузера (кнопка "вперед", если на то пошло), он не будет перемещаться в приложении. Пользователь может ожидать навигации в приложении, используя историю различных" страниц", которые он загрузил ранее. Вместо этого, он будет выброшен из веб-приложения. Нажатие кнопки обновления также бросит его в корень приложения.

с точки зрения пользователя, это обычное веб-приложение (ему не нужно знать, как оно спроектировано: SPA или иначе), и оно должно работать так, как должно работать любое веб-приложение/веб-сайт. Маршрутизация гарантирует это, не так ли?


время от времени у меня возникает один и тот же вопрос.

Я хотел бы сказать, что маршрутизатор в SPA является помощником иерархии компонентов.

Как отметил @tech4242, у нас нет чего-то вроде segue в iOS. Итак, что мы должны использовать, чтобы помочь пользователям перемещаться, если мы не используем маршрутизатор? Мы говорим здесь о СПА. Таким образом, мы можем управлять этим в магазине или государстве. Да, это возможно, но не желательно.

попробуйте подумать об этом с точки зрения использования компонента-ориентированного библиотека (либо React, либо Vue). Использование маршрутизатора помогает нам использовать определенный компонент для определенного маршрута. Когда пользователи перемещаются между разными маршрутами, мы полагаемся на маршрут, чтобы сообщить, какой компонент отображать. Мы просто соединяем компонент с определенным маршрутом, что делает наш корневой компонент (обычно называемый App) ясным, обслуживаемым и читаемым. Без маршрутизатора корневой компонент или состояние будут грязными и трудными для поддержания.


мое понимание (поправьте меня, если я ошибаюсь):

  • когда люди говорят о "маршрутизации", они обычно имеют в виду дополнительную маршрутизацию поверх маршрутизации по умолчанию.

  • для основной деятельности, нам не нужна дополнительная трасса на всех. Обычно существует маршрутизация по умолчанию, и маршрутизация по умолчанию может быть достаточной. Это в основном означает перевод нескольких параметров в адрес конечной точки, который мы можем вызвать на сервер.

и зачем нам нужна эта дополнительная маршрутизация?

  • вам это нужно, только если вам нужна "пользовательская" (и часто сложная) маршрутизация поверх или вместо маршрутизации по умолчанию.