javascript - NextJS 中 Express 路由和 client 路由之间有什么关系?

标签 javascript reactjs next.js

我是一名 NextJS 新手,试图了解 Express 中定义的路由与 NextJS 的“客户端”React 部分中定义的路由之间的关系。具体来说,如果在 Express 端定义了一条路由,比如

router.get("/aLonelyRoute",(req,res)=> {
   res.end("You made it!")
})

客户端没有相应的“页面”(我们的 React 应用程序中有以下页面

pages/index.js
pages/something.js
pages/another.js

),如果从浏览器向 /aLonelyRoute 发出请求,是否始终由 Express 服务器提供服务,而不是从客户端呈现?

此外,如果 Express 服务器提供的页面*确实*对应于“客户端”端反射(reflect)的路由,那么 app.render 自动 从服务器提供它或从客户端呈现它,具体取决于:

router.get("/something",(req,res)=> {
       app.render(req,res,'something',query)
    })

我的理解正确吗?

最佳答案

您使用express进行自定义SSR(服务器端渲染)。 - 当您刷新页面或在网址栏中输入 URL 并按 Enter 时,以简单的方式。 Express 和 Next.js 路由器协同工作来为页面提供服务,但这取决于所要求的渲染类型。如果是客户端渲染,那么 next.js 将接管,如果是 SSR,则 Express 将首先接管(Next.js 会要求 Express 接管)。

server.get('/p/:id', (req, res) => {
  const actualPage = '/post'
  const queryParams = { title: req.params.id }
  app.render(req, res, actualPage, queryParams)
})

在上面的示例中,如果有客户端渲染,用户将执行类似 /post/a-cool-post 的内容,但服务器将收到 /post?id=a-cool -post屏蔽/p/a-cool-post。请注意,/p/... 不存在。它是一个掩码 URL。看看这个例子中的as

<Link as={`/p/${post.id}`} href={`/post?title=${post.title}`}>
  <a>{post.title}</a>
</Link>

长话短说,这意味着我们正在询问 Express(在本例中为服务器端渲染),如果路线类似于 /p/a-cool-post,请给我们 /post/a-cool-post 这是客户端渲染。所以客户端和服务器端的路由是一样的。

第一个问题: /aLonelyRoute 仅在express中,没有代码告诉它在client-die中的等价物是什么。所以它只会从服务器渲染。

第二个问题: 是的,这是正确的。取决于用户的要求,如果他们在网址栏中输入 url 并按 Enter 键 刷新页面,然后表示如果使用Next Router进行路由,那么它将是客户端。

关于javascript - NextJS 中 Express 路由和 client 路由之间有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54280302/

相关文章:

javascript - 将数据推送到 AngularJS 对象中

select - 使用 React js 用 datajson 填充 select

javascript - 如何让 Next.js 服务器等待 Action 创建者完全完成?

image - 来自 Markdown 元数据或 frontmatter 的 NextJs 图像

javascript - 如何在next js中使用组件级sass文件

javascript - 如何在 React.js 中的 localStorage 发生任何更改时立即更新状态

Javascript - 无法理解闭包

javascript - 如何将表格复制到 Excel 或 Google 电子表格

javascript - 如何从另一个函数访问全局函数(Vue.prototype.myFn)?

reactjs - MaterialUI ReactJS 中的月份和年份选择器