an odd fellow

仕事のメモ

JavascriptのExportについて

前提

$ node --version
v.9.11.1

背景

import React from 'react';
import {render} from 'react-dom';

前者のように{}無しで書く場合と後者のように{}有りで書く場合があって、よくわからなかったから調べる。

名前付きエクスポートとデフォルトエクスポート

エクスポートの方法によってインポートの方法も変わるようだ。

名前を付けてエクスポートする場合はインポート側もその名前で束縛しなければならない。デフォルトエクスポートの場合はインポート側で束縛する名前を指定できる。

以下はlib.jsでaとbを定義してindex.jsでaをxとして、bをbとしてインポートしている。

lib.js

const a = 'this is a';
const b = 'this is b';
export default a;
export {b};

index.js

import x from './lib';
import {b} from './lib';

console.log(x);
console.log(b);

参考

名前付きエクスポートとデフォルトエクスポートについてはMDNを良く読む。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/export

nodeでimport/exportを使う方法

ついでにnodeでimport/export文を使うには .js でなく .mjs として保存し、 node --experimental-modules index.mjs と実行する。

参考

適当にググってこのQiitaが出てきた。

https://qiita.com/ryohji/items/93f5050b9af6fc15693c

公式はこのへん。

https://nodejs.org/api/esm.html#esm_enabling