import,require
import/export , require/exportsの立ち位置
- import/export
- ES6(ES2015)、ESモジュール(ESM)
- require/exports
- CommonJS(Node.js)
- require/exportsはJavaScriptの標準APIではない
require/exports
lib1.js
var n = 1000;
var add = function (val) {
return val + n;
};
module.exports.n = n;
module.exports.add = add;
main.js
var lib1 = require("./lib1");
console.log(lib1.add(5));
=> 1005
require/exports
lib1.mjs
export function add(val1, val2) {
return val1 + val2;
}
main.mjs
import { add } from "./lib1.mjs";
console.log(add(5, 10));
Nodeでの実行
Shell> node --experimental-modules ./main.mjs
=> 15
- NodeでESモジュールを使う場合は、拡張子を.mjsにして--experimental-modulesオプションを付けて実行する
- なお、Node バージョン12以降は.mjsでなくとも、package.jsonに{ "type": "module" }と記述すればOKとなった
参考
- import
- MDN https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/import
- require
- Node.js https://nodejs.org/api/modules.html#modules_modules