Next.JS:如何在服务器端进行所有请求

问题描述 投票:5回答:2

我正在构建一个Next.JS应用程序,它将从Python API和Postgres数据库中获取数据。

通常这很简单,除了要求我需要从服务器端发送所有请求,而不是用户的客户端。

我一直在和getInitialProps一起工作,但我不相信这是我需要的完整解决方案因为README中的这一行:

对于初始页面加载,getInitialProps将仅在服务器上执行。 getInitialProps将仅在通过链接组件或使用路由API导航到不同路由时在客户端上执行。

似乎getInitialProps是为初始页面加载而设计的,而不是为后续的服务器端数据提取而设计的。

如何以所有请求来自服务器端的方式设计我的Next.JS应用程序?

笔记:

  • 每个请求都可以实际上导致初始页面加载。
  • 用户客户端可以与Node(Next.JS)服务器通话,因为它是公开公开的。我目前正在尝试在express server中包装Next.JS。

Ty提前获得任何帮助

javascript reactjs typescript server-side nextjs
2个回答
9
投票

我通过在Express中包装Next.JS找到了解决方案!

我已将一个简单的示例项目推送到GitHub here

repo有一个很好的README以及代码中的注释,详细说明了正在发生的事情。

快速破解:

  • 在快速服务器中包装Next.JS。通过调用nextApp.render(...)显式地呈现页面,这在标准的Next.JS应用程序中隐式发生。见server.js
  • 使用快速路由。在使用nextApp.render(...)呈现页面之前进行服务器端请求。见server.js
  • 使用标准锚标记来确保页面请求到达快速服务器。见index.js
  • nextApp.renderctx的上下文(getInitialProps)参数中向页面提供传递的值。您可以通过在this.props中返回它们来在getInitialProps页面中提供这些值。见stars.js

建议和改进欢迎!


0
投票

这通常是个坏主意。

SPA的整个要点是防止整页加载。

您可以使用getInitialProps在初始页面请求时以及随后的导航中获取内容,因为它是针对每个页面调用的。

接下来鼓励您使用API​​与服务器通信

© www.soinside.com 2019 - 2024. All rights reserved.