欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > CommonJS与ESModule标准

CommonJS与ESModule标准

2026/5/24 4:10:07 来源:https://blog.csdn.net/qq_53922901/article/details/141807861  浏览:    关键词:CommonJS与ESModule标准

模块化的作用

  • 解决全局变量污染
  • 解决依赖混乱
  • 便于代码功能分类
  • 利于代码维护管理

规范内容

  • CommonJS规定:
  1. 每个独立的js文件中的全局变量是互不干扰的,不会污染其他js文件

  2. CommonJS是一个社区规范,node环境支持,每个js文件都是一个CMJ模块,使用node运行其中一个模块(入口模块)

  3. 当某模块需要使用其他模块的内容时,其他模块要【暴露】此内容,而此模块需要【导入】此内容

1.js
function a(a,b){return a+b;
};
// 导出,暴露
module.exports = {a
};2.js
// 导入,返回暴露的对象内容
const a = require('./1.js');

导入模块时,可以省略.js
必须以./../开头

  • ES Module规定:
  1. 这是随着ES6发布的官方模块化标准,目前浏览器和新版本node环境均支持
  2. 当某模块需要使用其他模块的内容时,其他模块要【暴露】此内容,而此模块需要【导入】此内容,一个模块可以同时存在两种导出方式,最终会合并为一个「对象」导出
// 默认导出(暴露),只能暴露一个内容
export default 3
// 具名导出
export const d = 3;
const d=3;
export {d}
// as 另取名
const k = 3;
export k as m;// 导入
// 仅运行一次该模块,不导入任何内容
import "模块路径"
// 导入属性 a、b,放到变量a、b中
import { a, b } from "模块路径"   
// 导入属性 default,放入变量c中
import c from "模块路径"  
// default->c,a->a, b->b
import c, { a, b } from "模块路径" 
// 将模块对象放入到变量obj中
import * as obj from "模块路径" // 以上均为静态导入
import("模块路径") // 动态导入,返回一个Promise,完成时的数据为模块对象

注意:静态导入的代码必须为在代码顶端,也不可放入代码块中
另外,静态导入的代码绑定的符号是常量,不可更改
导入模块时,不可以省略.js

两者最主要的区别就是导入与导出的区别
CommonJS只用于node环境
ES Module可用于node环境与浏览器环境

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词