当前位置: 首页 > news >正文

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环境与浏览器环境


http://www.mrgr.cn/news/18089.html

相关文章:

  • redisson RMap和RMapCache的区别
  • 2024年,人工智能行业哪些证书权威?
  • 【微信小程序入门】2、微信小程序开发前准备
  • echarts处理y轴最大小值根据数据动态处理、分割数和是否从0开始
  • Java学习第六天
  • 用相图分析 bbr,inflight 守恒的收敛速度
  • 世界上最快的端口扫描器masscan,如何使用?如何进行分布式使用部署?如何集成到web系统?
  • 【前端 · 面试 】HTTP 总结(九)—— HTTP 协商缓存
  • 2025毕业季:如何用Java SpringBoot构建医疗就诊平台?掌握最新技术,开启医疗信息化大门
  • 盲盒小程序开发,探索市场发展优势
  • 多看书,一年顶十年!(码农必读书单)
  • 多目标应用:基于自组织分群的多目标粒子群优化算法(SS-MOPSO)的移动机器人路径规划研究(提供MATLAB代码)
  • PANDA:免微调提升大模型领域特定能力的新方法
  • C语言典型例题59
  • 嵌入式是用C++还是用C的架构 怎么选?
  • springboot+vue 进销存管理系统
  • 使用 nuxi dev 启动 Nuxt 应用程序的详细指南
  • 笔记:Sysinternals 是什么, 常见的 Sysinternals 工具有哪些
  • 分布式事务Seata
  • python 并发100个请求