我是一名 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/