node.js的模块系统
一、使用ECMAScript Modules标准规范 ECMAScript Modules (ESM) 是 JavaScript 官方的标准模块系统。 使用方式 推荐使用.mjs后缀 配置package.json { 'type': 'module' } 默认导出/导入 export default function greet(name) { return `Hello, ${name}!`; } // 或者 const greet = function(name) { return `Hello, ${name}!`; }; export default greet; import greet from './myModule.mjs'; # greet可更换成任意名字 console.log(greet("World")); 命名导出/导入 export const PI = 3.14159; export function add(a, b) { return a + b; } export class MyClass { constructor(name) { this.name = name; } } // 或者 const PI = 3.14159; function add(a, b) { return a + b; } class MyClass { constructor(name) { this.name = name; } } export {PI, add, MyClass} import { PI, add, MyClass } from './myModule.mjs'; console.log(PI); console.log(add(2, 3)); const myInstance = new MyClass("Example"); console.log(myInstance.name); 命名导出/导入使用别名 let veryLongVariableName = 42; export { veryLongVariableName as answer }; import { answer as aa } from './myModule.mjs'; 命名导入使用命名空间 import * as myModule from './myModule.mjs'; console.log(myModule.PI); console.log(myModule.add(2, 3)); 二、使用CommonJS规范 CommonJS规范是node.js的默认方式。 导出 const greet = function(name) { return `Hello, ${name}!`; }; module.exports.greet = greet; // 或者 exports.greet = greet; 导入 const mod = require("./myModule.js"); console.log(mod.greet);