在没有构建器的情况下以编程方式使用Nuxt

时间:2019-05-31 11:16:02

标签: node.js express nuxt.js

我正在像下面这样的nuxt.render中间件以编程方式在express中使用nuxt

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

const api = require('../api')
app.use('/api', api)`

let config = require('../nuxt.config.js')
config.dev = !(process.env.NODE_ENV === 'production')

// Init Nuxt.js
const nuxt = new Nuxt(config)
app.use(nuxt.render)

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

// Listen the server
app.listen(port, host)
console.log('Server listening on ' + host + ':' + port)
}
start()

当我开发服务器api路由并对服务器端api文件进行一些更改并重新启动服务器时,整个nuxt项目每次都会构建,这会花费太多时间。这很不方便,因为nuxt文件中没有更改,而api路由文件中只有更改。

因此,构建一次后,我注释掉以下几行:

if (config.dev) {
// const builder = new Builder(nuxt)
// await builder.build()
}

然后我重新启动服务器,该服务器当然不会启动nuxt构建器。但是,现在我无法在浏览器上访问nuxt。服务器api路由有效,但是nuxt页面路由仅显示“ Nuxt loading…”屏幕。

如何在开发模式下使用nuxt应用而不每次都构建它?

2 个答案:

答案 0 :(得分:0)

这可能是一个有效的用例,有时人们不希望将两个服务器用于非常小的api / ui对。我还建议使用一种独立模式,该模式可通过nuxt/proxy工作,并且您可以在进行开发工作时运行它。在分离模式下,您的nuxt可以单独工作,而api也可以单独运行,并且nuxt通过`nuxt / proxy模仿上述设置。通过在nuxt config中添加这样的smth可以很容易地进行设置

  modules: [
    ['@nuxtjs/proxy', {    "/api/": { target: 'http://localhost:888/api'} }]
  ]

在生产中,您可以像以前一样运行。

答案 1 :(得分:0)

您可以使用 build.parallelbuild.cachebuild.hardSource。这将大大加快初始构建后的构建时间。

推荐这个用于生产版本。这就是我在代码中的方式:

nuxt.config.js

const isDev = process.env.NODE_ENV === "development";

module.exports = {
// ...
  build: {
    parallel: isDev,
    cache: isDev,
    hardSource: isDev
  },
// ...
};

package.json 中,我将 NODE_ENV 脚本的 production 设置为 build

"scripts": {
  "build": "NODE_ENV=production nuxt build"
}

P.S.:您可能还需要为开发版本设置 build.publicPath