{app,BrowserWindow}在JavaScript(node.js)中的含义是什么?

时间:2017-06-24 05:03:48

标签: javascript node.js electron

在阅读使用electron制作软件的文档时,我在index.js文件的开头(通常执行开始的文件)中遇到了这种类型的代码。

const {app, BrowserWindow} = require('electron')

{app, BrowserWindow}(语法,而不是关键字)的真正含义是什么?它是JavaScript语法,还是node.js之物或与电子有关的东西?

2 个答案:

答案 0 :(得分:7)

此语法称为' object destructuring',它是最新版JavaScript(JavaScript2015又名ECMAScript 6 / ES6)的一项功能 - appBroswerWindow只是要在应用程序的这一部分中使用的electron的特定部分。

这是一种简化代码并轻松引用依赖关键部分的方法。

这是https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

的一个非常基本的例子
var o = {p: 42, q: true};
var {p, q} = o;

console.log(p); // 42
console.log(q); // true

所以在你的情况下,electron是一个看起来像的导入模块(再次,这里粗略过度简化):

var electron = {
    app: {
        greet: () => {
            console.log("Hello, world!")
        }
    },
    BrowserWindow: {/* some other stuff */},
    anotherMethod: {/* other stuff, which we will ignore in your app */}
}

module.exports electron

然后在您的应用中导入此模块,您可以直接引用导入的属性:

const {app, BrowserWindow} = require('electron')

app.greet()
// "Hello, world!"

同样地,您可以引用BrowserWindow ...但是,如果不将其包含在解构分配中,您就无法引用anotherMethod

希望有所帮助。

答案 1 :(得分:5)

我只想指出(因为OP想知道什么是解构是有用的),你问题中的陈述相当于:

const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow

然而,使用对象解构,它变得更简洁,并且遗漏了const electron的不必要的声明:

const {app, BrowserWindow} = require('electron')

这就是我经常使用它的原因。