require 和 import 的区别

294 阅读1分钟

requireimport 是 JavaScript 中用于模块化的两种方式

主要区别:

image.png

一、require 的用法

requireCommonJS 规范中引入模块的方法,常用于 Node.js 中。

基本用法

// 引入一个模块
const module = require('./module');

// 引入 Node.js 内置模块
const fs = require('fs');

// 引入第三方模块
const express = require('express');

动态加载

require 是在运行时加载,可以根据条件动态加载模块:

if (condition) {
    const module = require('./module');
}

导出模块

通过 module.exportsexports 导出:

// 导出一个对象
module.exports = {
    name: 'example',
    greet: function() {
        console.log('Hello');
    }
};

// 导出单一值
module.exports = 'Hello World';

二、import 的用法

importES6 模块引入模块的方法,适用于浏览器和现代 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';