默认导出
本课属于 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 没有命名导出。文件的主要值用默认导出,工具函数较多的文件则用命名导出。
挑战
简单你的笔记需要一个统一的存放位置。新文件 store.js 会把它们保存在 store 对象中,该对象初始包含 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 bread - 在
list分支中,保留Notes for ...标题。在标题下方,显示存储对象中的每条笔记,每行一条,使用formatNote格式化,并从 1 开始编号。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 章会将笔记保存到文件中。
亲手试试
// 在第 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 在线编辑器