我正在构建一个Next.JS应用程序,它将从Python API和Postgres数据库中获取数据。
通常这很简单,除了要求我需要从服务器端发送所有请求,而不是用户的客户端。
我一直在和getInitialProps
一起工作,但我不相信这是我需要的完整解决方案因为README
中的这一行:
对于初始页面加载,
getInitialProps
将仅在服务器上执行。getInitialProps
将仅在通过链接组件或使用路由API导航到不同路由时在客户端上执行。
似乎getInitialProps
是为初始页面加载而设计的,而不是为后续的服务器端数据提取而设计的。
如何以所有请求来自服务器端的方式设计我的Next.JS应用程序?
笔记:
Ty提前获得任何帮助
我通过在Express中包装Next.JS找到了解决方案!
我已将一个简单的示例项目推送到GitHub here
repo有一个很好的README以及代码中的注释,详细说明了正在发生的事情。
快速破解:
nextApp.render(...)
显式地呈现页面,这在标准的Next.JS应用程序中隐式发生。见server.jsnextApp.render(...)
呈现页面之前进行服务器端请求。见server.js。nextApp.render
在ctx
的上下文(getInitialProps
)参数中向页面提供传递的值。您可以通过在this.props
中返回它们来在getInitialProps
页面中提供这些值。见stars.js建议和改进欢迎!
这通常是个坏主意。
SPA的整个要点是防止整页加载。
您可以使用getInitialProps
在初始页面请求时以及随后的导航中获取内容,因为它是针对每个页面调用的。
接下来鼓励您使用API与服务器通信