你的第一个模块
本课属于 Coddy Node.js 学习旅程的“Node.js 基础”单元。第 7 课,共 33 课。
notes.js 越来越长了,而且不止一个地方需要格式化笔记的代码。
模块就是一个文件。在函数前加上 export,其他文件就能使用它;import { name } from './file.js' 则会将它导入:
// math.js
export function add(a, b) {
return a + b;
}
// app.js
import { add } from './math.js';
console.log(add(2, 3));如果没有 export,这个函数就只能在 math.js 中使用,导入也会失败。路径以 ./ 开头,表示同一个文件夹,并以 .js 结尾:Node 不会自动猜测扩展名。
挑战
简单notes.js 越来越长了。把将笔记转换成带编号行的代码移到单独的文件 format.js 中,这样其他文件也能使用它。
- 在
format.js中编写函数formatNote(n, text)并导出它。它会返回编号、句点、一个空格,然后是文本。formatNote(1, 'Buy milk')会返回'1. Buy milk',而formatNote(3, 'Call Ada')会返回'3. Call Ada'。它会返回这一行,但不会打印这一行。 - 在
notes.js中,在文件顶部从./format.js导入formatNote。 - 在
add分支中,替换打印Adding: ...的那一行。现在,它会打印Adding:,后面接上formatNote(1, text),也就是编号为 1 的笔记。目前每条笔记的编号都是 1;真正的编号会在下一课中实现。
node notes.js add Buy milk 会打印:
Adding: 1. Buy milk试一试:在 $ node notes.js 后面的输入框中输入 add Buy milk,然后按 Enter。你会看到 Adding: 1. Buy milk。接着看看路径错误时 Node 会怎么提示:从 notes.js 的导入行中删除 .js,然后重新运行。程序会停止,并提示找不到模块 format。按“检查”之前,记得把 .js 加回去。
亲手试试
// formatNote(1, 'Buy milk') 应返回 '1. Buy milk'。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
Node.js 基础中的所有课
自己练习: Express 在线编辑器