带有集成REST API后端的SSR Nuxt.js

问题描述 投票:1回答:1

我正在使用集成的REST API服务器开发SSR Nuxt.js应用。

为此,我将/api端点添加到了Nuxt server.js代码中,如下所示

const express = require('express')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')

const app = express()

// Import and Set Nuxt.js options
const config = require('../nuxt.config.js')
config.dev = process.env.NODE_ENV !== 'production'

// MY REST API ENDPOINT (It's the right approach?)
const routesApi = require('./api/routes')
app.use('/api', routesApi)

async function start() {
  // Init Nuxt.js
  const nuxt = new Nuxt(config)

  const { host, port } = nuxt.options.server

  await nuxt.ready()
  // Build only in dev mode
  if (config.dev) {
    const builder = new Builder(nuxt)
    await builder.build()
  }

  // Give nuxt middleware to express
  app.use(nuxt.render)

  // Listen the server
  app.listen(port, host)
  consola.ready({
    message: `Server listening on http://${host}:${port}`,
    badge: true
  })
}
start()

我没有找到与此方法相关的示例。

我需要一些帮助,以了解这是否正确。

谢谢您的支持。

node.js express vue.js nuxt.js
1个回答
0
投票
我想,您的解决方案对于小型集成API已经足够了,这样您就可以避免针对CORS问题设置代理。 :)您可以用serverMiddleware添加一些糖:

// nuxt.config.js export default { ... serverMiddleware: [ '/api': '~/api/index.js' ], ... }

// api/index.js export default function (req, res, next) { ... // Well, here comes nothing next() }

但是大型API在单独的服务器上可以很好地扩展,这也是需要考虑的分离问题。 Nuxt可以更好地用作通用的应用程序渲染中间件,但API甚至可以使用另一种语言(后端)来编写。为了克服CORS的问题,您需要按预期将/api放在同一域中,因此使用Nuxt proxy-module会更容易。
© www.soinside.com 2019 - 2024. All rights reserved.