Должен ли я использовать экспресс-маршрутизатор на стороне клиента или маршрутизатор на стороне сервера?

У меня есть простое приложение, которое показывает список комментариев пользователей. Когда пользователь нажимается, приложение должно перейти к /users/<id> и показать новую страницу со сведениями о пользователях, которые будут запрошены из MongoDB. Мне трудно понять, где должна быть эта логика.

Я видел примеры использования реактивного маршрутизатора в клиенте, например:

render((
<Router>
  <Route path="/" component={App}>
     <Route path="/user/:userId" component={User}/>
  </Route>
</Router>
), document.body)

Но и так на стороне сервера:

<Route name="root" path="/" handler={require('./handlers/Root')}>

А также с помощью экспресс-маршрутизации:

app.get('/', function home (req, res, next) {
  res.render('layout', {
    reactHtml: React.renderToString(<App />)
  });
});

app.get('/user', function home (req, res, next) {
  res.render('layout', {
    reactHtml: React.renderToString(<User />)
  });
});

Какой путь выбрать? Каковы различия?


person Yuval    schedule 04.11.2015    source источник
comment
Как вы решили это сделать? Я не уверен, как React Router и Express должны работать вместе.   -  person jro    schedule 21.11.2015


Ответы (2)


Приложения React часто изначально предназначены только для клиентской части и, как вы заметили, привязаны к узлу. Вот что делает его таким быстрым: только вызовы API, без повторного рендеринга.

Изоморфные приложения также работают на сервере, что полезно для отката (без JS), а также для SEO и обмена в социальных сетях (Facebook должен читать метатеги HTML. Это совсем не просто сделать. гидрат от рендеринга сервера, что ускоряет работу пользователей на этих более глубоких страницах.

Чего вы, вероятно, никогда не захотите, так это просто рендерить на стороне сервера. Немного не хватает всей мощи React.

Запустите клиент с хорошим шаблоном, например https://github.com/erikras/react-redux-universal-hot-example, который приведет вас к изоморфности и обратно.

person mgreer    schedule 05.11.2015

С помощью react вы создаете одностраничные приложения, поэтому вы никогда не перезагрузите страницу, с помощью express вы создаете сервер, такой как apache, с php

person SharpEdge    schedule 04.11.2015
comment
Итак, вы говорите, что я должен просто обслуживать один файл с узлом, а затем всю свою логику использовать в клиенте? - person Yuval; 04.11.2015
comment
Если вы решите создать приложение React, да - person SharpEdge; 04.11.2015
comment
И как этот подход будет работать с рендерингом на стороне сервера? Похоже, что будет отображаться только корневой элемент, и с этого момента все будет на стороне клиента. - person Yuval; 04.11.2015