const { Nuxt, Builder } = require('nuxt') 是什么意思

What does const { Nuxt, Builder } = require('nuxt') mean

我正在开发一个 nuxt 项目 foe,我需要在服务器端使用 express 框架。在创建 nuxt 项目并在安装过程中选择快速选项后,我看到有一个新文件 server/index.js,它提供了一个包含以下内容的入门模板:

const express = require('express')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')
const app = express()
const host = process.env.HOST || '127.0.0.1'
const port = process.env.PORT || 3000

app.set('port', port)

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

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

  // 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()

我能理解其中的大部分但不是:

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

这是做什么的?

这是来自最新版本的 ECMAScript 标准的新(大概)对象解构语法。

您可以将其理解为从 require('nuxt') 语句返回的对象中请求属性 Nuxt 和 Builder。在引擎盖下,您可能会在 nuxt 模块的主文件中看到类似这样的内容:

module.exports = { Nuxt, Builder, Somethingelse, MoreObjects, AnotherFunction};

它本身也是一个新的(ish)shorthand,因为它采用局部变量并将其映射到对象上的 属性。考虑:

var number = 5;
var obj = { number : number }; // this is the same as just saying var obj = { number };

然后当您执行 const { Nuxt, Builder } = require('nuxt') 时,您会得到两个常量变量 Nuxt 和 Builder,您可以在代码的其他地方引用它们。