2017-06-24 4 views
2

electronでソフトウェアを作るのドキュメントを読んでいる間、私は{app, BrowserWindow}(構文ではなく、キーワードを)何index.jsファイル(一般的に実行開始ファイル){app、BrowserWindow}はJavaScript(node.js)で何を意味しますか?

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

の初めにこの種のコードに出くわしました本当に意味ですか?それはJavaScriptシンタックスか、node.jsなのか、それとも排他的に電子に関係しているのでしょうか?

+2

[オブジェクトの構造の割り当て](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Object_destructuring) - 新しい「javascript」(換言すれば、ES2015 +) –

+0

基本的には書くだけで短くする。 'const eletron = require( 'electron');の代わりに' electron.app'を使うと 'app'と入力するだけです。 2つのインポートされたモジュールが同じプロパティをエクスポートできるので、私はこのタイプの構造を個人的に避けます。あなたはできません。 'const {utils} = require( 'module1'); const {utils} = require( 'module2'); ' – Danosaure

答えて

5

この構文は、「オブジェクトの非構造」と呼ばれ、それには、JavaScriptの最新バージョンの機能です(JavaScript2015別名はECMAScript 6/ES6) - appBroswerWindowは、あなたがこの部分に使用したいelectronのちょうど特定の部分がありますあなたのアプリケーションの。

これは、コードを単純化し、依存関係の重要な部分を簡単に参照する方法です。ここで

は、だからあなたの場合には、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 

から非常に基本的な例です:

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を参照することはできませんでした。

希望します。私はちょうど(OPが便利です何非構造不思議ので)あなたの問題の文はと等価であることを、指摘したい

+0

私はそれを得ましたが、どのように役立つのでしょうか? –

+1

また、*非構造化割り当て*がオブジェクトから必要な「メンバー」を「引き出す」ときに、それらのローカル変数も作成することも考慮する必要があります。次に、「構造化されたメンバー」は変更できます(ここでは 'const'と宣言しない限り) – SanjiBukai

+0

はい、良い点、ありがとうございます。 – skwidbreth

3

:オブジェクトの構造化代入を使用して、しかし

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

、それはより簡潔になり、 const electronの不要な宣言を残し:

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

、私は非常に頻繁にそれを使用する理由です。

関連する問題