我目前正在使用Node.js,Koa,React和Next.js构建电子商务(Shopify,BigCommerce等)扩展。
作为代码库的一部分,我具有只能在服务器端执行的URL方法。该网址不应生成任何页面。但是,Next.js始终需要生成一个页面。
有没有一种方法只能让Next.js简单地调用URL方法而不是生成页面?例如,/app/auth
不应生成页面,而应执行服务器代码。但是,/app/dashboard
应该会生成一个页面。
我知道使用useFileSystemPublicRoutes
作为防止此行为的一种方法。但是,我发现它很不方便,因为它还需要客户端代码。
答案 0 :(得分:0)
但是,Next.js始终需要生成页面
否,那是不对的,您可以使用custom server来决定路由是否应该呈现页面。
一个带有express.js的简单示例:
渲染页面:
server.get('/my-page', (req, res) => {
return app.render(req, res, '/mypage', {...req.params, ...req.query})
})
api端点:
server.post("/my-endpoint", async (req, res) => {
res.json({});
});
请注意,要运行自定义服务器,您需要使用以下内容更新package.json中的脚本:
"scripts": {
"dev": "node server.js",
"build": "next build",
"start": "NODE_ENV=production node server.js"
}
如果您使用的是Koa.js,则有一个使用koa here的自定义服务器的官方示例