2016-01-04 47 views
12

私は、Babelでes6構文を使用してnode.jsアプリケーションでライブラリを参照するためにconstとimportを使用することを少し変更していることに気付きました。importとconstとの相違点とcommonjsでの相違点

推奨される方法は何ですか。また、constとimportの使用の違いは何ですか?あなたが多くのファイル/コンポーネントで同じライブラリをインポートしていると仮定します。ここで

のconst

const React = require('react') 

輸入

import React from 'react' 

それぞれの定義であるが、私はまだ使用していることを確認していません。

import

インポートステートメントが別のスクリプト、外部モジュールからエクスポートされた関数、オブジェクトまたはプリミティブをインポートするために使用される、等

const

CONST宣言は、リードを作成 - 値を参照するだけです。保持している値が不変であることを意味するものではなく、変数識別子を再割り当てできないということだけではありません。

+1

2番目は標準(ES2015)に由来し、最初のものはありません。 – zerkms

+0

'import'構文は、JavaScriptモジュールシステム用の新しい*ネイティブ* ES2015構文です。 – Pointy

+1

あなたが本当に求めていることは、NodeのrequireとES2015のインポートの違いは何ですか?これは[duplicate](http://stackoverflow.com/questions/31354559/using-node-js-require-vs-es6 -import-export) – adeneo

答えて

7

推奨される方法とは何ですか?constとインポートの使用の違いは何ですか?

2016年には、importが標準で使用されています。

しかしrequireオーバーimportを好むための技術的な理由はありません:requireを使用して行うことができるすべてはimportおよびその逆で行うことができます。場合によっては、一方はより簡潔になり、もう一方はより簡潔になります。

要約すると、プロジェクトコードの規則/一貫性に合ったものを選択します。

+0

ありがとう、私は '輸入'を使用します。私はちょうどいくつかの還元ライブラリと例が混乱していました。私はそれが読み込み専用であるという認識された利益のために思う 'const'アプローチを使用していました。あなたがコメントで言及したように、**輸入された識別子は変更することができません**つまり利点がないことを意味します。あなた自身[ここ](http://ecma-international.org/ecma-262/6.0/#sec-createimportbinding)と@adeneo [ここ](http://exploringjs.com/es6/ch_modules.html)から提供された素晴らしいリンク#sec_imports-as-export-ons) –

+2

'const'アプローチの主な利点は、トランスペアリングなしでノード4/5で動作するということです。 – loganfsmyth

関連する問題