JavaScript import vs require
この記事では、JavaScript ステートメント require()
と import()
の主な違いを紹介します。また、コンテキストを提供し、それぞれが ES6 と CommonJS の両方で使用できる場所を詳しく説明します。
JavaScript の require()
これは組み込みの node.js
ステートメントであり、他の個別のファイルからのモジュールを含めるために最も一般的に使用されます。これは、JS ファイルを読み取り、実行して、エクスポートされるオブジェクトを返すことで機能します。コアノードモジュール、コミュニティベース、さらにはローカルモジュールを組み込むことができることで非常に人気があります。
require()
を使用して、JavaScript に組み込みモジュールを含めることができます。
const express = require('express');
ローカルモジュールを含めるのも簡単です。
require('local_module');
上に示したように、node.js
は指定されたパスで local_module.js
を見つけようとします。出力は、ノードが検出したものに応じて延期されます。指定されたパスにファイルが存在する場合、出力にはモジュールの内容が表示されます。そうでない場合は、次のようなエラーが発生する可能性があります。
Error: Cannot find module 'local_module'
at Function.Module._resolveFilename(module.js: 470: 15)
at Function.Module._load(module.js: 418: 25)
at Module.require(module.js: 498: 17)
at require(internal / module.js: 20: 19)
at repl: 1: 1
at ContextifyScript.Script.runInThisContext(vm.js: 23: 33)
at REPLServer.defaultEval(repl.js: 336: 29)
at bound(domain.js: 280: 14)
at REPLServer.runBound[as eval](domain.js: 293: 12)
at REPLServer.onLine(repl.js: 533: 10)
JavaScript の import()
import()
は ES6 モジュールです。export()
とともに、これらは一般に ES6 インポートおよびエクスポートと呼ばれます。これは基本的に、ステートメントを ES モジュール外の他のファイルタイプで使用できないことを意味します。
import()
ステートメントを使用すると、ユーザーはモジュールをインポートしてプログラムで使用できます。構文は次のとおりです。
import './this-module.js';
ユーザーは、インポートするモジュールへのファイルパスを指定します。
JavaScript の require
と import
の主な違い
require()
は CommonJS を使用する node.js
ステートメントですが、import()
は ES6 でのみ使用されます。
require()
はファイルに配置された場所に残り(非字句)、import()
は常に先頭に移動します。
require()
はプログラムのどの時点でも使用できるように呼び出すことができますが、import()
はファイルの先頭でのみ実行できます。
ほとんどの人は require()
ステートメントを使用してコードを直接実行しますが、import()
を使用する場合は実験的なモジュール機能フラグを使用することを好みます。
最後に、require()
ステートメントを使用するすべてのファイルは .js
ファイルとして保存されますが、import()
を使用するファイルは .mjs
ファイルとしてのみ保存できます。
プログラムで同時に使用することはできません。
一般に、import()
は、ユーザーが必要なモジュールの一部のみを選択してロードできるため、より推奨されます。このステートメントは、require()
よりもパフォーマンスが高く、メモリを節約します。