4

我正在构建一个通用/同构的 javascript 应用程序(Express/Redux/React)。我正在考虑使用 React Router 在客户端路由和/或使用 Express 在服务器上路由。

我知道客户端路由已经在单页应用程序中变得流行,因为它们使用户交互更加无缝。

但是,我试图更好地了解客户端与服务器端路由。在构建任何应用程序(单页与否)时,有人可能会遇到客户端路由的潜在缺点是什么?什么时候最好考虑在服务器上进行路由?大型应用程序是仅在一侧(客户端/服务器)路由还是经常将两者混合?

谢谢!

4

2 回答 2

3

我认为没有充分的理由远离客户端路由。如果您使用的是 react-router 之类的东西,那么这既是客户端路由又是服务器路由,没有什么难的。有些人可能会告诉你一些特定的领域会很困难:

  • 搜索引擎优化。这是免费的,您点击的任何 URL 都将在服务器上正确呈现并发送到客户端,因此 Googlebot 将正确看到该页面。如果您在服务器端重新渲染,那么客户端路由更难进行 SEO 的建议绝对没有道理。
  • 分析。很简单,只需将ga('send', 'pageview', path)您处理导航的任何位置放在客户端(就在您触发路由器更改路径之前)。
  • 资源,如果您的整个网站很大,您不想在页面首次加载时将整个内容发送给客户端。这将需要更多的复杂性(例如使用 webpack 定义多个入口点)。如果您的网站有数百个页面,那么客户端路由无论如何都会给您带来更少的好处。

这个网站(我自己的)使用客户端渲染。您会注意到它在关闭 JavaScript 的情况下工作得很好(确保 Google 正确看到它的最佳方法。如果您想查看任何特定的部分是如何完成的,源代码就在这里。

于 2015-09-10T03:28:06.153 回答
2

客户端路由的一些缺点(可能是):

  • 虽然服务器端路由是一种久经考验的真正技术,并且有许多可用的技术和库选项,但客户端可能不太健壮和易于管理。

  • 监测。虽然服务器端路由页面可以通过任何基本的网络爬虫软件进行验证,但客户端路由页面需要通过更高级的工具进行监控,该工具实际呈现 HTML 并触发客户端脚本。

  • 提供 SEO 内容的困难。虽然有可能,但要困难得多。

  • 资源。根据您构建应用程序的方式,服务器端路由可能更节省资源,因为为每个页面加载客户端的开销会更少。

  • 兼容性。根据您定位的浏览器,您首选的客户端路由方法可能不受支持。

对于路由页面不需要或不应该被搜索引擎索引的应用程序,您仍然可以使用客户端路由。

对于对 SEO 至关重要且不需要成为 SPA 的页面(例如,它们只提供信息内容),没有理由不去服务器端。

于 2015-09-10T02:28:13.200 回答