Menu
CoddyTech

默认导出

本课属于 Coddy Node.js 学习旅程的“Node.js 基础”单元。第 8 课,共 33 课。

这节课添加了 store.js,这个文件只负责一件事:存放你的笔记。这样的文件会将它负责的内容作为默认导出,而导入它的文件可以为它取任意名称。

export default 标记文件要导出的唯一值。导入方可以为它取任意名称,而且不用写花括号:

// 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 没有命名导出。文件的主要值用默认导出,工具函数较多的文件则用命名导出。

challenge icon

挑战

简单

你的笔记需要一个统一的存放位置。新文件 store.js 会把它们保存在 store 对象中,该对象初始包含 3 条笔记。将这个存储对象共享给 notes.js,并在 add 和 list 中使用它。

  1. 在 store.js 中,将 store 设为文件的默认导出。底部的注释标出了位置。
  2. 在 notes.js 中,在文件顶部、formatNote 导入旁边导入存储对象。默认导入不需要花括号。
  3. 在 add 分支中,使用 store.add(text) 添加笔记。它会返回新笔记的编号。打印 Adding: ,后面跟上使用该编号格式化的笔记。存储对象初始有 3 条笔记,因此 node notes.js add Buy bread 会打印:
    Adding: 4. Buy bread
  4. 在 list 分支中,保留 Notes for ... 标题。在标题下方,显示存储对象中的每条笔记,每行一条,使用 formatNote 格式化,并从 1 开始编号。node notes.js list 会打印:
    Notes for you
    1. Buy milk
    2. Call Ada
    3. Water the plants
    如果存储对象中没有笔记,仍要在标题下方打印 No notes yet。

试试看:在 $ node notes.js 后面的输入框中输入 add Buy bread,然后按 Enter。你会看到 Adding: 4. Buy bread。接着输入 list:你会看到最初的 3 条笔记,但看不到 Buy bread。存储对象保存在内存中,因此每次运行都会从 store.js 中的 3 条笔记重新开始。第 3 章会将笔记保存到文件中。

亲手试试

// 在第 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 在线编辑器