Wiki_JS_CommonJs_vs_EcmaScript - inoueshinichi/Wiki_Web GitHub Wiki

CommonJSとEcmaScriptの差異

参考

CommonJSのExport

  • 1または2を使用する. 併用不可.
  1. exports.{your_object} = {your_object}
  2. module.exports = { ... }

EcmaScriptのExport

  • 1または2を使用する. 併用可能.
  1. export {your_object}
  2. default export {your_object}

EcmaScriptにおいて__dirname,__filenameを利用する方法

// ES js
import path from 'node:path';
import { fileURLToPath } from 'node:url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

EcmaScriptにおける動的インポート

  • importモジュールを使用する
  • CommonJSのrequire('your/lib')は動的インポート
  • importモジュールの戻り地はPromise
  • resolve()時の引数にmoduleを受け取る.
// ES js

// then/catch/finallyを用いる場合
import("your/lib")
.then((module) => {
  // statement
  const obj = new module.YourObj();
  obj.method();
})
.catch((err) => {
  console.err(error);
})
.finally(() => {
  // statement
});

// async/awaitを用いる場合
async function main() {
  const module = await import("your/lib");
  const obj = new module.YourObj();
  obj.method();
}

main();