2016-03-24 11 views
0

Einige Knoten JS Bibliotheken (z debug) dieses Muster verwenden, um mit Aussagen erfordern:ES2015 `import` Alternative für` require()() `?

var debug = require('debug')('http'); 

Dies ist ein im wesentlichen aus einer Funktion erfordern, die direkt aufgerufen wird, dann.

Meine Frage: Gibt es ein ähnliches Konstrukt mit ES2015 import Aussagen?

Wie würden Sie solchen Code übersetzen, wenn Sie von commonjs zu es2015 Syntax konvertieren würden?

Antwort

1

Dieses Muster funktioniert nur, weil require(debug) einen Wert zurückgibt, die verwendet werden können, sofort.

var debug = require('debug')('http'); 

import ist ein bisschen wie if in dem Sinne, dass sie nicht als Wert nicht lösen.

var d = if(a) { b } else { c }; // unexpected token 
var debug = import debug from 'debug'; // unexpected token 

require Aktien Semantik mit dem ? Operator, der die gleiche Funktion wie if ausführt, sondern löst als Wert.

var d = a ? b : c; 
var debug = require('debug'); 

Die einzige Möglichkeit besteht darin, die Anweisung aufzuteilen.

import _debug from 'debug'; 
var debug = _debug('http'); 
+0

Großer Vergleich danke! –

1

There is no such shorthand in ES2015.

Sie würden nur den Code in zwei Teile geteilt haben:

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

, für die der Export sein würde:

export default function { ... } 
+0

Danke für den Link! –

Verwandte Themen