Как работает обслуживание разных страниц в React? - PullRequest
0 голосов
/ 08 марта 2019

Допустим, у меня есть реагирующие проекты и сервер Express для обслуживания моего проекта, как показано ниже (после создания проекта):

enter image description here]

Таким образом, только index.html обслуживается, не так ли?Если пользователь переходит на другую страницу, как ему отправляется эта страница?

Ответы [ 4 ]

2 голосов
/ 08 марта 2019

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

До тех пор, пока вы не обновите страницу, ваш запрос не отправится на сервер.Следовательно, index.html обслуживается только один раз, и после этого маршрутизатор (в данном случае реагирующий маршрутизатор) вступает во владение и управляет маршрутизацией в URL, используя API истории браузера.

Надеюсь, это поможет!

1 голос
/ 08 марта 2019

Это делается с использованием реагирующего маршрутизатора, который управляет маршрутизацией с помощью браузера History API .

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

0 голосов
/ 08 марта 2019

В вашей папке React, которую вы хотите сделать npm install --save react-router-dom.

Итак, в семействе библиотек React Router есть пара различных зависимостей, которые вы можете установить.

Убедитесь, что выникогда не устанавливайте React Router самостоятельно.

Библиотека react-router, опубликованная на npm, является основной библиотекой всего в общем проекте React Router.

Так что react-router имеет некоторое ядронавигационная логика внутри него.Он решает, как работать с React, как изменять содержимое в зависимости от различных правил и некоторой другой низкоуровневой логики.

Чтобы получить реальную реализацию, так как она работает именно в браузере, установите react-router-dom.

Таким образом, в любое время, когда вы хотите использовать React Router в проекте для управления навигацией, всегда устанавливайте react-router-dom, а не react-router.

Существуют другие проекты с аналогичными именами, которые могут вам понадобитьсяну, react-router-native для использования внутри проектов React Native.

В веб-приложениях мы используем response-router-dom, мы не создаем нативные мобильные приложения.

React-router-native предназначена только для собственных мобильных приложений.

Для браузера вы всегда хотите react-router-dom вместо react-router-native

Так что, возможно, в вашем App.js компоненте вы хотите настроить что-то, чтовыглядит так:

import React from "react";
import { BrowserRouter, Route } from “react-router-dom”;

const App = () => {
  return <div>App</div>;
};

export default App;

Я также рекомендую, если вы новичок в React Router, познакомиться с ним, настроив что-то временное, например, так:

import React from "react";
import { BrowserRouter, Route } from “react-router-dom”;

const PageOne = () => {
    return <div>PageOne</div>;
};

const PageTwo = () => {
    return <div>PageTwo<button>Click Me</button></div>;
};

const App = () => {
  return (
    <div>
      <BrowserRouter>
        <div>
          <Route path=“/” exact component={PageOne} />
           <Route path=“/pagetwo”  component={PageTwo} />
        </div>
           </BrowserRouter>
    </div>
   );
};

Посетите ваш localhost:3000 и затем ваш localhost:3000/pagetwo, проверьте, как все это работает.

Когда мы заходим на страницу под названием localhost: 3000 и вводим этот адрес в URL, он загружает приложение.

Сам React Router не заботится обо всем этом URL, вместо этого React Router заботится только обо всех символах, перечисленных после определения имени домена или порта.

Localhost: 3000 интерпретируется как localhost:3000/

Если я перехожу на localhost:3000/, он по-прежнему загружает мое приложение.

Теперь у меня есть другие примеры, если я перехожу на localhost:3000/pageone, React Router заботится обо всем только после порта и домена

То же самое, если бы я перешел на airbnb.com/listings/spain реагирующий маршрутизатор, учитывал бы /listings/spain только при решении, какой контент выводить на экран.

Обратите внимание, что в приведенном выше примере я создал экземпляр BrowserRouter, хорошо BrowserRouter создает свой собственный объект, известный как объект истории.

Этот объект истории будет смотреть на URL внутри адресной строки и извлекать только чтоt часть URL, на которую реагирует маршрутизатор, заботится.

Затем объект истории сообщит этот путь к BrowserRouter, который сообщит этот путь обоим Route компонентам, и эти Route компоненты решат, будет липоказать себя или спрятаться в зависимости от пути, который посещает пользователь, и свойства пути, который был передан при его создании.

0 голосов
/ 08 марта 2019

вы можете использовать response-router-dom вот так

<Switch>
<Route exact path="/" component={Home}/>
<Route path="/someurl" component={ComponentForSomeUrl}
</Switch>

и визуализируйте его с помощью BrowserRouter

но вы можете использовать что-то вроде history.push, на мой взгляд, response-router-dom действительно прост и лучше, чем реагирует на маршрутизатор

вам не нужно отправлять html-файл по определенному маршруту, в случае реакции express для построения API используется (в большинстве случаев)

...