我正在研究nuxt项目的敌人,我将需要在服务器端使用express框架。创建nuxt项目并在安装过程中选择express选项后,我看到有一个新文件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')
这是做什么的?
答案 0 :(得分:3)
这是来自ECMAScript标准最新版本的新的(ish)对象解构语法。
您可以将其理解为从require('nuxt')
语句返回的对象中请求属性Nuxt和Builder。在后台,您可能会在nuxt模块的主文件中看到以下内容:
module.exports = { Nuxt, Builder, Somethingelse, MoreObjects, AnotherFunction};
它本身也是一个新的(ish)速记,因为它接受局部变量并将其映射到对象的属性。考虑:
var number = 5;
var obj = { number : number }; // this is the same as just saying var obj = { number };
然后,当您执行const { Nuxt, Builder } = require('nuxt')
时,会得到两个常量变量Nuxt和Builder,您可以在代码的其他地方引用它们。