require 和 import 是 JavaScript 中用于模块化的两种方式
主要区别:
一、require 的用法
require 是 CommonJS 规范中引入模块的方法,常用于 Node.js 中。
基本用法
// 引入一个模块
const module = require('./module');
// 引入 Node.js 内置模块
const fs = require('fs');
// 引入第三方模块
const express = require('express');
动态加载
require 是在运行时加载,可以根据条件动态加载模块:
if (condition) {
const module = require('./module');
}
导出模块
通过 module.exports 或 exports 导出:
// 导出一个对象
module.exports = {
name: 'example',
greet: function() {
console.log('Hello');
}
};
// 导出单一值
module.exports = 'Hello World';
二、import 的用法
import 是 ES6 模块引入模块的方法,适用于浏览器和现代 JavaScript 环境(如前端框架)。
基本用法
// 引入默认导出的模块
import module from './module';
// 引入具名导出的模块
import { namedExport1, namedExport2 } from './module';
// 同时引入默认和具名导出
import defaultExport, { namedExport } from './module';
// 重命名导出
import { namedExport as renamedExport } from './module';
静态加载
import 是在编译时加载模块,不能在运行时动态引入:
// 不支持这种写法,会报错
if (condition) {
import('./module'); // 动态导入需使用动态 `import()` 语法
}
// 动态加载需使用以下方式(返回 Promise)
import('./module').then(module => {
console.log(module.default);
});
导出模块
通过 export 导出:
// 导出多个具名模块
export const name = 'example';
export function greet() {
console.log('Hello');
}
// 导出默认模块
export default 'Hello World';