首页 > 编程语言 >JavaScript 模块之间的差异:CJS、AMD、UMD 和 ESM

JavaScript 模块之间的差异:CJS、AMD、UMD 和 ESM

时间:2023-09-18 17:00:43浏览次数:46  
标签:CommonJS JavaScript AMD UMD 模块 CJS ESM

JavaScript 的世界是一个不断发展和发展的技术领域。多年来,开发人员尝试使用不同的模块系统来提供更有组织性和协作性的工作环境。在这篇博文中,我们将研究四种流行的 JavaScript 模块系统之间的差异:CommonJS (CJS)、异步模块定义 (AMD)、通用模块定义 (UMD) 和 ECMAScript 模块 (ESM)。

1.CommonJS(CJS):

CommonJS 是 Node.js 采用的模块系统,用于服务器端。CJS 允许使用 require 和 module.exports 导入和导出模块。这使得模块能够同步加载并提供简单的语法。

2. 异步模块定义(AMD):

AMD 是一个为基于浏览器的应用程序设计的模块系统。它提供异步模块加载支持,从而提高在浏览器中运行的应用程序的性能。AMD 允许使用 Define 和 require 函数定义和导入模块。

3.通用模块定义(UMD):

UMD 提供了支持 CommonJS 和 AMD 模块系统的通用结构。这允许模块在不同的环境中工作。UMD 适用于在浏览器和服务器端运行的应用程序。

4.ECMAScript 模块 (ESM):

ESM 被认为是 JavaScript 的官方模块系统,并且在现代浏览器中得到原生支持。ESM 允许使用导入和导出关键字导入和导出模块。这为静态分析和树摇动等优化提供了更多机会。此外,ESM 还提供异步模块加载支持。

标签:CommonJS,JavaScript,AMD,UMD,模块,CJS,ESM
From: https://blog.51cto.com/u_16261266/7512298

相关文章

  • webpack打包报错:Unexpected token (Note that you need plugins to import files that
    关于这个问题,我在网上查找了一些资料(博客、问答),得到的答案多种多样:1.可能是缺少rollup的某种plugin;2.可能是系统环境的问题(windows/linux/macos);3.可能是某段代码引起的问题;4.。。。 经过对自身情况的逐步测试定位,发现->出问题的代码片段:callbacks:{onMouseMove,......
  • 【直接收藏】前端JavaScript面试100问(上)
    1、解释一下什么是闭包?闭包:就是能够读取外层函数内部变量的函数。闭包需要满足三个条件:访问所在作用域;函数嵌套;在所在作用域外被调用。优点:可以重复使用变量,并且不会造成变量污染。缺点:会引起内存泄漏使用闭包的注意点:由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,......
  • 无涯教程-JavaScript - LOG函数
    描述LOG函数将数字的对数返回您指定的基数。语法LOG(number,[base])争论Argument描述Required/OptionalNumberThepositiverealnumberforwhichyouwantthelogarithm.RequiredBaseThebaseofthelogarithm.Ifbaseisomitted,itisassumedtobe10.......
  • JavaScript中的浅拷贝与深拷贝
    前言JavaScript中的浅拷贝和深拷贝是非常重要的概念,它们在处理对象和数组时具有不同的作用。在编程中,经常需要复制数据以便进行各种操作,但必须注意拷贝的方式,以确保得到预期的结果。浅拷贝是创建一个新对象或数组,并将原始对象或数组的引用复制给它。这意味着新对象和原始对象将......
  • 无涯教程-JavaScript - EXP函数
    描述EXP函数返回e升至数字的幂。常数e等于自然对数的底数2.71828182845904。语法EXP(number)争论Argument描述Required/OptionalNumberTheexponentappliedtothebasee.RequiredNotes要计算其他碱基的幂,请使用幂运算符(^)EXP是LN的倒数,LN是数字的自然......
  • 无涯教程-JavaScript - EVEN函数
    描述EVEN函数返回四舍五入到最接近的偶数整数的数字。您可以使用此功能来处理两个项目。语法EVEN(number)争论Argument描述Required/OptionalNumberThevaluetoround.RequiredNotes如果数字为非数字,则EVEN返回#VALUE!错误值。不管数字的符号如何,当从零开......
  • 无涯教程-JavaScript - DEGREES函数
    描述DEGREES函数将弧度转换为度。语法DEGREES(angle)争论Argument描述Required/OptionalAngleTheangleinradiansthatyouwanttoconvert.RequiredNotes弧度和度之间的转换由以下关系式计算180度=π弧度其中π是数学常数,PI=3.14159265358979...适用性E......
  • JavaScript 创建并初始化任意长度的数组
    直接定义vararr=[0,0,0,0,0];//[0,0,0,0,0]使用push()方法vararr=[];for(leti=0;i<5;i++){arr.push(0);}//[0,0,0,0,0]使用Array构造函数和fill()方法vararr=newArray(5);//[empty×5]arr.fill(0);//[0......
  • 无涯教程-JavaScript - DECIMAL函数
    描述DECIMAL函数将给定基数的文本表示形式转换为十进制数。语法DECIMAL(text,radix)争论Argument描述Required/OptionalText您要转换的数字的文本表示形式。Text的字符串长度必须小于或等于255个字符。RequiredRadix提供的数字的基数(基数)。基数必须是整数......
  • 无涯教程-JavaScript - CSCH函数
    描述CSCH函数返回以弧度指定的Angular的双曲余割值。语法CSCH(number)争论Argument描述Required/OptionalNumberTheangle(inradians)thatyouwanttocalculatethehyperboliccosecantof.RequiredNotes双曲余割值的等式为-$$csch\left(x\right)=\frac......