Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在NextJS中,Express routes和客户端routes之间的关系是什么?_Javascript_Reactjs_Next.js - Fatal编程技术网

Javascript 在NextJS中,Express routes和客户端routes之间的关系是什么?

Javascript 在NextJS中,Express routes和客户端routes之间的关系是什么?,javascript,reactjs,next.js,Javascript,Reactjs,Next.js,我是一名NextJS新手,试图了解Express中定义的路由与NextJS的“客户端”React部分中定义的路由之间的关系。具体来说,如果在快车侧定义路线,例如 router.get("/aLonelyRoute",(req,res)=> { res.end("You made it!") }) 客户端没有相应的“页面”(React应用程序中有以下页面 pages/index.js pages/something.js pages/another.js ),如果从浏览器向/aLo

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

router.get("/aLonelyRoute",(req,res)=> {
   res.end("You made it!")
})
客户端没有相应的“页面”(React应用程序中有以下页面

pages/index.js
pages/something.js
pages/another.js
),如果从浏览器向
/aLonelyRoute
发出请求,是否总是从Express server提供服务,而不是从客户端提供

此外,如果Express服务器提供的页面*确实*对应于“客户端”上反映的路由,则
app.render
会自动从服务器或客户端提供该页面,具体取决于:

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

我理解这一点是否正确?

您使用
express
进行自定义SSR(服务器端渲染)。-当您刷新页面或在URL栏中键入URL并按enter键时,请使用简单的方法。Express和
Next.js
router一起为页面提供服务,但这取决于所要求的渲染类型。如果是客户端渲染,那么next.js将接管,如果是SSR,那么Express将首先接管(next.js将要求Express接管)

在上面的示例中,如果有客户端渲染,用户将执行类似于
/post/a-cool-post
的操作,但服务器将接收到
/post?id=a-cool-post
,它被屏蔽
/p/a-cool-post
。请注意,
/p/…
不存在。它是一个掩码URL。将本例中的视为

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

{post.title}
长话短说,这意味着我们正在询问express(在本例中为服务器端渲染),如果路由类似于
/p/a-cool-post
,请转到并给我们
/post/a-cool-post
,这是客户端渲染。因此,客户端和服务器中的路由将是相同的

第一个问题:
/aLonelyRoute
仅在express中使用,没有代码来说明它在客户端中的等效性。因此,它将仅从服务器渲染

第二个问题: 是的,这是正确的。取决于用户要求什么,如果他们在url栏中键入url并按enter键 刷新页面,然后express,如果使用下一个路由器进行路由,则它将是客户端

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