gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:53:10 35 4
gpt4 key购买 nike

我是 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(服务器端渲染)。 - 以一种简单的方式,当您刷新页面或在网址栏中键入网址并按回车键时。 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 栏中键入 url 并按 enter并刷新页面,然后表达,如果您使用Next Router进行路由,那么它将是客户端。

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

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com