主な違いrequire
とはimport
、つまりrequire
自動的にスキャンするnode_modules
モジュールを見つけるために、しかしimport
、ES6から来ていることはありません。
ほとんどの人は使用バベルをコンパイルするimport
とexport
なりこれ、import
同じ行動しますrequire
。
Node.jsの将来のバージョンはimport
それ自体をサポートする可能性があり(実際、試験的なバージョンはすでにサポートしています)、Node.jsのメモによるimport
と、サポートしませんnode_modules
。ES6に基づいており、モジュールのパスを指定する必要があります。
だから私はあなたimport
がバベルと一緒に使用しないことをお勧めしますが、この機能はまだ確認されていませんnode_modules
、将来的にサポートされるかもしれません、誰が知っているでしょうか?
参考までに、以下はbabelがES6のimport
構文をCommonJSのrequire
構文に変換する方法の例です。
ファイルapp_es6.js
に次のインポートが含まれているとします。
import format from 'date-fns/format';
これは、ノードパッケージdate-fnsからフォーマット関数をインポートするためのディレクティブです。
関連package.json
ファイルには次のようなものを含めることができます:
"scripts": {
"start": "node app.js",
"build-server-file": "babel app_es6.js --out-file app.js",
"webpack": "webpack"
}
関連.babelrc
ファイルは次のようになります。
{
"presets": [
[
"env",
{
"targets":
{
"node": "current"
}
}
]
]
}
ファイルでbuild-server-file
定義されているこのスクリプトpackage.json
は、babelがapp_es6.js
ファイルを解析してファイルを出力するためのディレクティブですapp.js
。
build-server-file
スクリプトを実行した後app.js
、date-fns
インポートを開いて探すと、次のように変換されていることがわかります。
var _format = require("date-fns/format");
var _format2 = _interopRequireDefault(_format);
そのファイルのほとんどは、ほとんどの人間にとってはむちゃくちゃですが、コンピュータはそれを理解しています。
また、参考までに、モジュールを作成してプロジェクトにインポートする方法の例として、インストールdate-fns
してから開くと、次のnode_modules/date-fns/get_year/index.js
ものが含まれていることがわかります。
var parse = require('../parse/index.js')
function getYear (dirtyDate) {
var date = parse(dirtyDate)
var year = date.getFullYear()
return year
}
module.exports = getYear
上記のバベルプロセスを使用すると、app_es6.js
ファイルに次の内容を含めることができます。
import getYear from 'date-fns/get_year';
// Which year is 2 July 2014?
var result = getYear(new Date(2014, 6, 2))
//=> 2014
そして、babelはインポートを次のように変換します。
var _get_year = require("date-fns/get_year");
var _get_year2 = _interopRequireDefault(_get_year);
そして、それに応じて関数へのすべての参照を処理します。
express
はtypeになりany
ます。ここから定義を含めることができますnpmjs.com/package/@types/express