NextJS 中 Express 路由和客户端路由之间的关系是什么?

What is relationship between Express routes and client routes in NextJS?

我是 NextJS 的新手,正在尝试了解 Express 中定义的路由与 'client' 中定义的路由之间的关系,NextJS 的 React 部分。具体来说,如果在Express端定义一条路由,比如

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

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

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

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

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

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

我的理解是否正确?

您使用 express 进行自定义 SSR(服务器端渲染)。 - 当您刷新页面或在 url 栏中键入 URL 并按回车键时,这是一种简单的方法。 Express 和 Next.js 路由器一起工作来为页面提供服务,但这取决于所要求的渲染类型。如果是Client端渲染,那么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 栏中键入 url 并按回车键 并刷新页面,然后表达,如果你使用 Next Router 进行路由,那么它将是客户端。