NodeJS教程

模块导入和导出

Preview
  • 导出
  • 导入
  • 总结

在 Node.js 中,模块是一种可重用的代码块或库。模块有助于开发者保持代码组织良好和可维护性,并且可以被多个文件或项目共享复用。Node.js 为模块提供了简单的导入(require)和导出(exports)机制。

导出

  • CommonJS

在 Node.js 中通过 module.exports 来导出一个模块。可以向 module.exports 传递一个对象,这个对象就会成为模块的默认导出。例如:

// person.js
const name = "John Doe";
const age = 30;

module.exports = {
  name: name,
  age: age
};

在上面的代码中,我们定义了一个名为 person 的模块,导出了一个包含名字和年龄的对象。

  • ES6 在使用 ES6 模块语法时,我们可以使用“导出(export)”关键字来导出模块。例如:
// person.js
export const name = "John Doe";
export const age = 30;

在上面的代码中,我们使用 "export" 关键字来导出了两个变量。

导入

  • CommonJS

在 Node.js 中通过 require 来导入模块。例如:

// main.js
const person = require("./person");
console.log(`Name: ${person.name}`);
console.log(`Age: ${person.age}`);

在上面的代码中,我们通过 require 函数导入了 person 模块,并将其赋值给一个变量。通过这个变量我们可以访问 person 模块的属性和方法。

还有一个更简单的方法就是将要导出的信息直接赋值给 module.exports,例如:

// person.js
const name = "John Doe";
const age = 30;

module.exports.name = name;
module.exports.age = age;

这种语法会使代码变得更加简洁易懂,并且允许我们按需导出模块的子模块。例如,在模块中导出一个函数:

// person.js
function sayHello(name) {
  console.log(`Hello ${name}`);
}

module.exports = {
  sayHello: sayHello
};

在其他文件中导入函数并使用:

// main.js
const person = require("./person");

person.sayHello("John");

这样可以确保代码一致,避免在两个地方写同样的函数。

  • ES6

在 Node.js 中支持使用“导入(import)”关键字来导入 ES6 模块。例如:

// main.js
import { name, age } from "./person.js";

console.log(`Name: ${name}`);
console.log(`Age: ${age}`);

在上面的代码中,我们使用“导入”关键字从 person.js 中导入了 nameage 变量。

使用“导入”关键字还有其他几种方式。例如,可以使用默认导出:

// person.js
export default {
  name: "John Doe",
  age: 30
};

使用:

// main.js
import person from "./person.js";

console.log(`Name: ${person.name}`);
console.log(`Age: ${person.age}`);

在上面的代码中,我们使用“导入”关键字和“默认导出”语法导入了一个对象,其中包含两个属性:nameage。可以使用对象的属性访问这些值。

另外,我们还可以使用“导入”关键字来导入整个模块,或者使用“取别名”来改变导入的名称:

// main.js
import * as person from "./person.js";

console.log(`Name: ${person.name}`);
console.log(`Age: ${person.age}`);

在上面的代码中,我们使用“导入”关键字和“*”语法导入了整个 person.js 模块,并将其命名为 person。可以使用对象的属性访问模块导出的所有值。

总结

使用 ES6 模块语法的导入和导出比使用旧版的 CommonJS 规范更加现代化和优雅,更加适合现代化的前端开发。