web-dev-qa-db-ja.com

es6で関数をインポートして呼び出す

以前:

var debug = require('debug')('http')
  , http = require('http')
  , name = 'My App';

Es6では、最初の行のようにすぐにインポートして呼び出すにはどうすればよいですか?

import debug from 'debug'();

ノーですか?

23

次の2行が必要です。

import debugModule from 'debug';
const debug = debugModule('http');

インポート構文は宣言的なインポート構文であり、関数を実行しません。

36
loganfsmyth

ノーですか?

正しい。 importステートメントは、単純なrequire()ステートメントよりも類似していることに注意してください。これは、「ロードされた」モジュールのローカル変数へのバインディングも作成します。

あれは、

import debug from 'debug'();

...行動/意味論により近い

var debug = require('debug');

...それは単純に

require('debug');

Commonjsスタイルのモジュールローダーとの類推は、ある時点で明らかに壊れますが、その日の終わりには、import debug from 'debug'は、実際に呼び出すことができる(または参照する)ものには解決されません。

3
jmar777