私はノードで「クラス」を書いています
// mymodule/index.js
function MyClass() {}
MyClass.prototype.method1 = function() {..}
通常私はします
module.exports = MyClass
しかし、両方の構文でクラスを使用できるようにします
var MyClass = require('mymodule')
そして
import {MyClass} from 'mymodule'
正しい方法はどれですか?
ES5とES6の両方に互換性のあるエクスポートを作成する限り、Babelはすでにそれを処理します。 (あなたの質問へのコメントで伝えられているように。ダイアログで迷子になった人だけを明確にしている。)
_module.exports = MyClass
_
var MyClass = require('mymodule')
と_import MyClass from 'mymodule
_の両方で動作します
ただし、明確にするために、あなたが尋ねた実際の構文:
_import {MyClass} from 'mymodule'
_
とは異なるものを意味する
_import MyClass from 'mymodule'
_
後者の場合は、_module.exports.MyClass = MyClass
_としてエクスポートする必要があり、ES5モジュールの場合はvar MyClass = require('mymodule').MyClass
として要求する必要があります
どちらの方法も正しいですが、括弧なしで次のようにes6にインポートしてみてください。
import MyClass from 'mymodule'
それ以外の場合は、次のように関数をエクスポートする必要があります。
module.exports.MyClass = MyClass
そして、このようにインポートするより:
import { MyClass } from 'mymodule'
コメントから、nodeのいくつかのモカ単体テストでES6フロントエンドコードを実行しようとしていることがわかります。はい、ノードがES6モジュールをサポートするまで、それはできません。もし私があなたなら、 systemjs を使用してこれらのmochaテストのコードをロードします。 Mochaはプロミスをサポートしているので、テストの前にファイルをロードするのは非常に簡単です。
両方の構文を記述すると、より多くの問題が発生します。