デフォルトエクスポート
CoddyのNode.jsジャーニー「Node.jsの基礎」セクションの一部。レッスン 8/33。
このレッスンでは、メモを保存するストアという1つのことを扱うファイル、store.jsを追加します。このようなファイルは、その1つのことをデフォルトエクスポートとして公開し、それをインポートするファイルでは任意の名前を付けます。
export defaultは、ファイルが扱う1つの値を示します。インポートする側は任意の名前を付け、中括弧は使いません。
// config.js
const config = { port: 3000 };
export default config;
// app.js
import settings from './config.js';
console.log(settings.port);中括弧を使うと名前付きエクスポートを指定することになるため、ここではimport { config } from './config.js'は失敗します。config.jsでは何も名前付きでエクスポートしていないからです。ファイルの主要な値にはデフォルトエクスポートを、ヘルパーをまとめたファイルには名前付きエクスポートを使います。
チャレンジ
簡単メモを保存しておく場所が必要です。新しいファイル store.js はメモを store オブジェクトに保持し、store.notes には最初から3件のメモが入っています。そのストアを notes.js と共有し、add と list で使いましょう。
store.jsで、storeをファイルのデフォルトエクスポートにします。ファイルの末尾にあるコメントが、その場所を示しています。notes.jsで、formatNoteのインポートの隣に、ファイルの先頭でストアをインポートします。デフォルトインポートには波括弧を使いません。add分岐では、store.add(text)でメモを追加します。これは新しいメモの番号を返します。Adding:に続けて、その番号で整形したメモを表示します。ストアには最初から3件のメモがあるため、node notes.js add Buy breadを実行すると、次のように表示されます:Adding: 4. Buy breadlist分岐では、Notes for ...の見出しをそのまま残します。その下に、ストア内のすべてのメモを1行ずつ、formatNoteで整形し、1から番号を付けて表示するよう、No notes yetを置き換えます。node notes.js listを実行すると、次のように表示されます:ストアにメモがない場合は、見出しの下にNotes for you 1. Buy milk 2. Call Ada 3. Water the plantsNo notes yetを表示します。
試してみましょう: $ node notes.js の後ろにある入力欄に add Buy bread と入力し、Enterキーを押します。Adding: 4. Buy bread と表示されます。次に list と入力すると、最初からある3件のメモが表示されますが、Buy bread は表示されません。ストアはメモリ上にあるため、実行するたびに store.js にある3件のメモから始まります。第3章では、メモをファイルに保存します。
自分で試してみよう
// chapter 3でファイルに保存するまでは、メモはここに保持されます。
const store = {
notes: ['Buy milk', 'Call Ada', 'Water the plants'],
add(text) {
this.notes.push(text);
return this.notes.length;
},
};
// storeをこのファイルのデフォルトエクスポートにします。
Node.jsの基礎のすべてのレッスン
自分で練習してみよう: Expressプレイグラウンド