2015-09-10 3 views
4

Я создаю универсальное/изоморфное приложение для javascript (Express/Redux/React). Я рассматриваю маршрутизацию на клиенте с помощью React Router и/или маршрутизацию на сервере с помощью Express.Недостатки маршрутизации на стороне клиента?

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

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

Спасибо!

+2

Доступны ли состояния вашего приложения через URL-адрес? Если это так, вы должны использовать оба. Представьте, что вы заходите в приложение/foo/bar, и это связано только с клиентской стороны, если я копирую и передаю этот URL-адрес кому-то, если ваша клиентская сторона не учитывает этот URL-адрес, он не сработает. Urls - это точка доступа к текущему состоянию вашего приложения, важно помнить об этом. –

+0

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

ответ

1

Некоторые из недостатков стороны клиента маршрутизации (может быть), что:

  • Хотя на стороне сервера маршрутизация испытанный и достоверный метод и есть много методов и параметров библиотек доступны, на стороне клиента, вероятно, будет менее надежным и управляемым.

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

  • Трудности с сервисом SEO-контента. Хотя это возможно, это намного сложнее.

  • Ресурсы. В зависимости от того, как вы создаете приложение, маршрутизация на стороне сервера может быть более ресурсоэффективной, поскольку на каждую страницу будет загружаться клиентская сторона.

  • Совместимость. На основе того, какие браузеры вы нацеливаете, предпочтительный метод маршрутизации на стороне клиента может не поддерживаться.

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

Для страниц, имеющих решающее значение для SEO и не нуждающихся в SPA (например, они просто служат информационному контенту), нет причин не идти на серверную сторону.

3

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

  • SEO. Это бесплатно, любой URL-адрес, который вы нажмете, будет отображаться на сервере правильно и отправлен клиенту, поэтому Googlebot увидит страницу правильно. Нет абсолютно никакой истины в предположении, что SEO сложнее с маршрутизацией на стороне клиента, при условии, что вы находитесь на стороне сервера.
  • Аналитика. Просто, просто введите ga('send', 'pageview', path) везде, где вы обрабатываете навигацию на стороне клиента (прямо перед тем, как вы запускаете маршрутизатор для изменения пути).
  • Ресурсы, если весь ваш сайт довольно большой, вы не хотите отправлять все это клиенту при первой загрузке страницы.Это потребует немного большей сложности (например, определение нескольких точек входа с помощью webpack). Если у вас есть сайт с сотнями страниц, тогда маршрутизация на стороне клиента в любом случае даст вам меньшую выгоду.

This site (мой собственный) использует визуализацию на стороне клиента. Вы заметите, что он отлично работает с выключенным JavaScript (лучший способ быть определенным, что Google видит его правильно). Источник - here, если вы хотите увидеть, как была выполнена какая-либо конкретная часть.

Смежные вопросы