Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 客户端路由的缺点?_Javascript_Reactjs_Flux_Redux - Fatal编程技术网

Javascript 客户端路由的缺点?

Javascript 客户端路由的缺点?,javascript,reactjs,flux,redux,Javascript,Reactjs,Flux,Redux,我正在构建一个通用/同构的javascript应用程序(Express/Redux/React)。我正在考虑使用React路由器在客户端上进行路由和/或使用Express在服务器上进行路由 我知道客户端路由已经在单页应用程序中流行起来,因为它们使用户交互更加无缝 然而,我试图更好地理解客户端与服务器端路由。在构建任何应用程序(单页或非单页)时,用户可能会遇到客户端路由的潜在缺点是什么?什么时候最好考虑服务器上的路由?大型应用程序是只在一侧(客户机/服务器)路由,还是经常将两者混合 谢谢大家! 客

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

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

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


谢谢大家!

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

  • 虽然服务器端路由是一种久经考验的技术,并且有许多技术和库选项可用,但客户端的健壮性和可管理性可能会降低

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

  • 服务SEO内容的困难。虽然这是可能的,但要困难得多

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

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

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


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

我认为没有什么理由不去客户端路由。如果您使用的是react router之类的东西,那么这就是客户端和服务器路由,并且没有什么困难。有些人可能会告诉你,某些特定领域将很困难:

  • 搜索引擎优化。这是免费的,无论你点击哪个URL,它都会正确地呈现在服务器上并发送到客户端,这样Googlebot就能正确地看到页面。如果您是服务器端重新设计,那么客户端路由的SEO更难的说法是完全没有道理的
  • 分析。简单,只要将
    ga('send','pageview',path)
    放在客户端处理导航的任何位置(就在触发路由器更改路径之前)
  • 资源,如果您的整个站点相当大,您不希望在页面首次加载时将整个内容发送给客户端。这将需要稍微复杂一点(例如用webpack定义多个入口点)。如果你有一个有数百个页面的站点,那么客户端路由无论如何都不会给你带来什么好处

(我自己的)使用客户端渲染。您会注意到,在关闭JavaScript的情况下,它可以正常工作(这是确保Google正确地看到它的最佳方式)。如果您想查看某个特定部分是如何完成的,则可以查看其来源。

您的应用程序的状态是否可以通过url访问?如果是这样的话,你应该两者都用。假设您转到app/foo/bar,并且这仅通过客户端绑定,如果我复制并与其他人共享此url,除非您的客户端已说明此url,否则将失败。URL是应用程序当前状态的访问点,记住这一点很重要。@DanielTate是对的,如果URL是应用程序状态的访问点,您必须在两侧执行此操作,否则他们访问该页面时将出错。