Reactjs 在NextJS_文档中放置事件处理程序——以及NextJS页面和React SPA之间的关系

Reactjs 在NextJS_文档中放置事件处理程序——以及NextJS页面和React SPA之间的关系,reactjs,next.js,server-side-rendering,Reactjs,Next.js,Server Side Rendering,我正在学习NextJS,并试图了解服务器端呈现代码和客户端反应代码之间的差异——虽然NextJS看起来很棒,但我在概念上理解这两种呈现类型之间的差异以及这些差异的含义方面遇到了一些困难 例如,我在NextJS文档中,在描述`\u文档的部分,遇到了以下注释`` // _document is only rendered on the server side and not on the client side // Event handlers like onClick can't be adde

我正在学习NextJS,并试图了解服务器端呈现代码和客户端反应代码之间的差异——虽然NextJS看起来很棒,但我在概念上理解这两种呈现类型之间的差异以及这些差异的含义方面遇到了一些困难

例如,我在NextJS文档中,在描述`\u文档的部分,遇到了以下注释``

// _document is only rendered on the server side and not on the client side
// Event handlers like onClick can't be added to this file
为什么不能将事件处理程序放在
文档中?这和把它们放在“客户端”有什么区别

另外,我有点困惑,因为NextJS似乎是围绕构建“页面”而设计的——也就是说,它支持添加
,等等,就好像我们在构建一个静态网站一样。但是如果我要建一个水疗中心,只有一页,不是吗?可以使用React路由器模拟不同的“页面”,但实际包含的HTML(标题、正文等)保持不变,不是吗?也就是说,我们从来没有真正离开过实际的HTML页面


我可以使用NextJS OK——按照文档的教程进行操作——但从概念上讲,我显然是在为树木而忽略森林。非常感谢任何线索或指点

pages/_app.js
是您需要编写客户端代码的地方。它在所有页面之间共享

pages/_document.js
仅在SSR中运行。所以你需要把相关的代码放在那里

也就是说,如果您需要修改应用程序的正常行为并按照自己的方式进行定制,则只需创建这些页面

SSR表示服务器端呈现,当您在urlbar中键入url并按enter键时,或者当您使用刷新按钮刷新页面时,就会发生这种情况

CSR另一方面,客户端呈现是SPA(单页应用程序)的方式。因此URL会更改,但没有服务器调用。它在
页面
目录中查找用于路由的资源


下一个标题是操作每页标题标签的方法,如
meta
title
等。它将为您提供自定义头标签的自由。

pages/\u app.js
是您需要自定义客户端代码的地方。它在所有页面之间共享

pages/_document.js
仅在SSR中运行。所以你需要把相关的代码放在那里

也就是说,如果您需要修改应用程序的正常行为并按照自己的方式进行定制,则只需创建这些页面

SSR表示服务器端呈现,当您在urlbar中键入url并按enter键时,或者当您使用刷新按钮刷新页面时,就会发生这种情况

CSR另一方面,客户端呈现是SPA(单页应用程序)的方式。因此URL会更改,但没有服务器调用。它在
页面
目录中查找用于路由的资源


下一个标题是操作每页标题标签的方法,如
meta
title
等。它将为您提供定制头标签的自由。

谢谢。有一件事:为什么它说你不能将
onClick
处理程序添加到
\u doc.js
?因为onClick
处理程序,因为它们是从服务器提供的,并在浏览器中“运行”。当我想到“在服务器上运行”时,我想到了PHP、Node或Python之类的代码。这就是
\u doc
,它实际上是以某种方式在服务器上执行,而不是提供给浏览器的吗?或者两者都有?@MoHo那么我如何才能在body标签中添加onTouchStart?因为正文在页面内/_文档中。有一件事:为什么它说你不能将
onClick
处理程序添加到
\u doc.js
?因为onClick处理程序,因为它们是从服务器提供的,并在浏览器中“运行”。当我想到“在服务器上运行”时,我想到了PHP、Node或Python之类的代码。这就是
\u doc
,它实际上是以某种方式在服务器上执行,而不是提供给浏览器的吗?或者两者都有?@MoHo那么我如何才能在body标签中添加onTouchStart?因为正文在页面内/\u文档