Javascript 客户端路由的缺点?
我正在构建一个通用/同构的javascript应用程序(Express/Redux/React)。我正在考虑使用React路由器在客户端上进行路由和/或使用Express在服务器上进行路由 我知道客户端路由已经在单页应用程序中流行起来,因为它们使用户交互更加无缝 然而,我试图更好地理解客户端与服务器端路由。在构建任何应用程序(单页或非单页)时,用户可能会遇到客户端路由的潜在缺点是什么?什么时候最好考虑服务器上的路由?大型应用程序是只在一侧(客户机/服务器)路由,还是经常将两者混合Javascript 客户端路由的缺点?,javascript,reactjs,flux,redux,Javascript,Reactjs,Flux,Redux,我正在构建一个通用/同构的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是应用程序状态的访问点,您必须在两侧执行此操作,否则他们访问该页面时将出错。