JavaScript ES2016 中 import 与 require 用法及区别详解

作者:小括号时间:2026-10-22 07:02:09浏览:535

本文详解JavaScript ES2016中import和require的用法与区别。import用于静态导入,需在文件顶层使用,支持编译时静态分析;require实现动态加载,属于CommonJS规范。通过示例展示默认导出、命名导出及动态引入的具体写法。

JavaScript ES2016 模块加载概述

本文介绍JavaScript (ES2016) 中 import 和 require 的用法及其区别,供参考。

首先创建一个简单的JS文件,假设文件名为 lib.js,其内容如下:

命名导出与静态导入示例


export const sqrt = Math.sqrt;
export function square(x) {
 return x * x;
}
export function diag(x, y) {
 return sqrt(square(x) + square(y));
}

通过上述定义,可以在其他文件中引用 lib 中定义的属性和方法。引用方式主要有两种,即 import 和 require。


//方法一
import { square, diag } from 'lib';
console.log(square(11)); // 121
console.log(diag(4, 3));
//方法儿
import * as lib from 'lib';
square = lib.square;

此外,还可以设置默认导出,需在 lib.js 中定义 export default {}。default 后既可以接单个参数,也可以接数组。具体写法如下:

默认导出与动态加载对比


 //------ module1.js ------
export default 123;

//------ module2.js ------
const D = 123;
export { D as default };

通常习惯使用第一种方式,随后通过 import 获取该数组或参数。需要注意的是,import 仅支持静态导入,必须在文件开头、最上层预先写好。而 require 则可以实现动态加载。

加载方式 规范 命令 特点
运行时加载 CommonJS/AMD require 社区方案,提供了服务器/浏览器的模块加载方案。非语言层面的标准。只能在运行时确定模块的依赖关系及输入/输出的变量,无法进行静态优化。
编译时加载 ESMAScript6+ import 语言规格层面支持模块功能。支持编译时静态分析,便于JS引入宏和类型检验。动态绑定。

const incrementCounter = function ({dispatch,state}){
 dispatch(‘INCREMENT‘)
}
export default {
 incrementCounter
}
//require
let myAction = require(‘xxxxx‘);
myAction.default.incrementCounter()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

作者最新文章