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 进行路由,那么它将是客户端。
我是 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 进行路由,那么它将是客户端。