JavaScript 的模块导入和导出是 ES6 中新增的功能,使得我们可以方便地将代码分割成可重用的模块,从而提高代码的可维护性和可读性。在 Node.js 中,我们可以使用 CommonJS 规范或者 ES6 模块规范来实现模块的导入和导出。
CommonJS 规范
导出模块
在 CommonJS 规范中,我们可以使用 module.exports 或者 exports 来导出模块。
使用 module.exports 导出模块
// module.js
function sayHello() {
console.log('Hello, world!');
}
module.exports = {
sayHello
};
在上面的例子中,我们定义了一个名为 sayHello 的函数,并将其导出为一个对象,该对象可以被其他模块使用。
使用 exports 导出模块
// module.js
exports.sayHello = function() {
console.log('Hello, world!');
};
在上面的例子中,我们使用 exports 对象将 sayHello 函数导出为一个属性,该属性可以被其他模块使用。
导入模块
在 CommonJS 规范中,我们可以使用 require() 函数来导入模块。
const myModule = require('./module');
myModule.sayHello(); // 输出:Hello, world!
在上面的例子中,我们使用 require() 函数导入了名为 module 的模块,并使用 myModule.sayHello() 调用了该模块中导出的函数。
ES6 模块规范
导出模块
在 ES6 模块规范中,我们可以使用 export 关键字来导出模块。
导出默认模块
// module.js
export default function() {
console.log('Hello, world!');
}
在上面的例子中,我们使用 export default 关键字将一个匿名函数导出为默认模块。注意,一个模块只能有一个默认导出。
导出命名模块
// module.js
export function sayHello() {
console.log('Hello, world!');
}
export const name = 'John';
在上面的例子中,我们使用 export 关键字将 sayHello() 函数和 name 常量导出为命名模块。
导入模块
在 ES6 模块规范中,我们可以使用 import 关键字来导入模块。
导入默认模块
import myModule from './module';
myModule(); // 输出:Hello, world!
在上面的例子中,我们使用 import 关键字导入了名为 module 的模块,并使用 myModule() 调用了该模块中导出的函数。
导入命名模块
import { sayHello, name } from './module';
sayHello(); // 输出:Hello, world!
console.log(name);