对于gatsbyjs
站点,我正在考虑是否使用客户端路由概念(https://www.gatsbyjs.org/docs/building-a-site-with-authentication/(从客户端(我会说传统方法(提供受限制的页面
我想要的是有一个static url
,其中包含取决于身份验证状态显示或不显示的内容,而不是当时只有该客户端可以访问的不同client-only url
我想知道这是否是没有服务器的"缺点,或者情况是否并非如此,我不太了解它
而且,与基于服务器的方法相比,还有其他/任何缺点吗?
我可以提出两个缺点,它们实际上只是保护私人路由的其他方法:
- 服务器计算
- 提供用户特定数据
- Gatsby 不会在服务器上动态渲染
1.服务器计算
一个缺点可能是客户端呈现页面而不是您的服务器。如果要最小化服务器计算,这也可能是一个优势。除此之外,没有任何缺点。这只是保护私人路线的另一种方式。
您可以通过链接文档中描述的仅限客户端的机制定义仅限客户端的路由,例如www.your-site.com/settings/account
。此路由对登录的用户受保护。如果他们未登录,则不会呈现站点,并且他们将被重定向到登录页面。
2. 提供用户特定数据
我不确定静态URL是什么意思。只要您的用户登录,就会为他们呈现 URLwww.your-site.com/settings/account
。您可以通过 JSON 网络令牌、cookie、会话和各种 API 为用户提供正确的数据。
这又不是一个真正的劣势。对于服务器和客户端呈现的页面,您始终需要以仅向经过身份验证的用户发送私有数据的方式构建 API。
3. 盖茨比不会在服务器上动态渲染
这意味着您必须将服务器呈现的页面实现到静态站点中。我认为没有任何官方文档。当您再次动态渲染站点的一部分时,使用 Gatsby(一个 stic-site 生成器(是没有意义的。
如果您致力于Gatsby,我建议您使用仅限客户端的路由,因为这样它仍然是一个静态站点,具有所有优点。