Javascript 中的 CJS, AMD, UMD 和 ESM是什么

ES6之前,JS一直没有自己的 模块体系,这一点对于大型项目的开发很不友好,所以社区出现了 CommonJSAMD(本人不熟悉), CommonJS主要是用于 服务器(Node), AMD主要是用于 浏览器

但是ES6引入了 ESM,到此,JS终于有了自己的 模块体系,基本上可以 完全取代CJS和AMD。

下面简单总结一下 ESM以及 ESM和CJS的区别

一、CJS

CJSCommonJS 的缩写。主要用于服务器端,主要使用如下:

二、ESM

ESM是 ESModule,是 ECMAScript自己的模块体系,是 Javascript 提出的实现一个标准模块系统的方案,于ES6引入, 代表 ES 模块。主要使用如下:

可以在 HTML 中调用,只要如下

它兼具两方面的优点:具有 CJS 的简单语法和 AMD 的异步

三、区别

使用方式不同(以上); CJS 不能在浏览器中工作。它必须经过转换和打包

commonJs是被加载的时候运行,esModule是编译的时候运行

commonJs输出的是值的浅拷贝,esModule输出值的引用

commentJs具有缓存。在第一次被加载时,会完整运行整个文件并输出一个对象,拷贝(浅拷贝)在内存中。下次加载文件时,直接从内存中取值

commonJs 输出值拷贝

esModule 输出值引用

ES6 模块加载 CommonJS 模块

module.exports 等同于 export default 可以用 import 引入

CommonJS 模块加载 ES6 模块

CommonJS 模块加载 ES6 模块,不能使用require命令,而要使用import()函数。

module.exports 默认值为{}

exports 是 module.exports 的引用

exports 默认指向 module.exports 的内存空间

require() 返回的是 module.exports 而不是 exports

若对 exports 重新赋值,则断开了 exports 对 module.exports 的指向

引用:

require 和 import 都可引用

module.exports
exports

四、其他模式

AMD

AMD 代表异步模块定义。下面是一个示例代码

AMD 是异步(asynchronously)导入模块的(因此得名)

一开始被提议的时候, AMD 是为前端而做的(而 CJS 是后端)

AMD 的语法不如 CJS 直观。我认为 AMDCJS 完全相反

UMD

UMD 代表通用模块定义( Universal Module Definition)。

在前端和后端都适用(”通用”因此得名)

CJSAMD 不同,UMD 更像是一种配置多个模块系统的模式。

当使用 Rollup/Webpack 之类的打包器时, UMD 通常用作备用模块

Original: https://www.cnblogs.com/h-c-g/p/15397942.html
Author: 一心二念
Title: Javascript 中的 CJS, AMD, UMD 和 ESM是什么

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535974/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • JavaScript Library – PhotoSwipe

    效果 前言 以前用过 lightbox2 和 fancyapps. lightbox2 已经没有维护了. fancyapps 改版好多次了. v2, v3 现在 v4 已经开始收费…

    JavaScript 2023年5月29日
    078
  • 走进JavaScript——重拾函数

    Original: https://www.cnblogs.com/pssp/p/6921700.htmlAuthor: 追梦子Title: 走进JavaScript——重拾函数

    JavaScript 2023年5月29日
    078
  • JavaScript 探究[] == ![]结果为true,而 {} == !{}却为false

    console.log( [] == ![] ) // true console.log( {} == !{} ) // false 在比较字符串、数值和布尔值的相等性时,问题还比…

    JavaScript 2023年5月29日
    038
  • 转:JavaScript函数式编程(一)

    一、引言 说到函数式编程,大家可能第一印象都是学院派的那些晦涩难懂的代码,充满了一大堆抽象的不知所云的符号,似乎只有大学里的计算机教授才会使用这些东西。在曾经的某个时代可能确实如此…

    JavaScript 2023年5月29日
    050
  • JavaScript 获取按键,并屏蔽系统 Window 事件

    JavaScript 获取按键,并屏蔽系统 Window 事件 csharp;gutter:true;// JavaScript 获取按键,并屏蔽系统 Window 事件windo…

    JavaScript 2023年5月29日
    059
  • 深入理解 JavaScript 异步系列(1)——基础

    前言 2014年秋季写完了《深入理解javascript原型和闭包系列》,已经帮助过很多人走出了 js 原型、作用域、闭包的困惑,至今仍能经常受到好评的留言。 很早之前我就总结了J…

    JavaScript 2023年5月29日
    058
  • JavaScript 多级联动浮动(下拉)菜单 (第二版)

    上一个版本(第一版请看这里)基本实现了多级联动和浮动菜单的功能,但效果不是太好,使用麻烦还有些bug,实用性不高。这次除了修改已发现的问题外,还对程序做了大幅调整和改进,使程序实用…

    JavaScript 2023年5月29日
    092
  • JavaScript Table排序

    序二(09/05/03) 近来还是那么忙,趁五一更新一下程序吧。这个版本主要增加和改进了以下东西:1,对字符串改用localeCompare来比较;2,一次排序中能使用多个排序对象…

    JavaScript 2023年5月29日
    068
  • javascript 闭包最简单理解

    首先说3点与闭包有关系的东西。 一、变量的作用域 变量的作用域不难理解。 1.函数内部可以访问函数外部的变量,而函数外部不能访问函数内部的变量。 2.如果在函数内定义变量的时候,不…

    JavaScript 2023年5月29日
    067
  • Javascript 读cookie

    由于asp的cookie是经过url编码的,所以读之前要unescape一下。 下面是我用正则的方法取cookie,包括单值和多值: /*******参数说明:sMainName …

    JavaScript 2023年5月29日
    041
  • 【JavaScript 插件】图片展示插件 PhotoSwipe 初识

    前言: 考虑自己网站的图片展示,而且要支持移动端和PC端。自己写的代码也不尽如意,要写好的话也需要时间,于是就想到了使用相关插件。 准备: PhotoSwipe 官网地址:http…

    JavaScript 2023年5月29日
    054
  • 【JavaScript系列】之零:TypeScript牛刀小试

    基于对JavaScript编程语言的好奇,在查看相关资料时,看到已经出现了一个更好的编程语言:TypeScript。下面简单介绍一下这个编程语言,作为JavaScript系列的开篇…

    JavaScript 2023年5月29日
    060
  • JavaScript 学习-44.jQuery 遍历查找方法

    通过 jQuery 遍历,从被查找当前元素开始,在家族树中向上移动(祖先),向下移动(子孙),水平移动(兄弟),这种移动被称为对 DOM 进行遍历。 向上遍历 DOM 树,查找父元…

    JavaScript 2023年5月29日
    066
  • JavaScript 浮动定位提示效果

    本来想做一个集合浮动定位和鼠标跟随的tooltips效果,但发现定位和鼠标跟随在一些关键的地方还是不同的,还是分开来吧。这个效果本身难度不大,主要在程序结构和扩展中下了些功夫,务求…

    JavaScript 2023年5月29日
    069
  • JavaScript统计数据处理(7)- 一维数据生成

    JavaScript是一种广泛使用网页编程语言,在浏览器中运用JavaScript技术处理统计数据具有最佳的推广传播效果 一维数据又称一元数据,是由对等关系的有序或无序信息构成,采…

    JavaScript 2023年5月29日
    0103
  • JavaScript高级用法二之内置对象

    对象的属性:反映该对象某些特定的性质的,如:字符串的长度、图像的长宽等; 对象的方法:能够在对象上执行的动作。例如,表单的”提交”(Submit),时间的&…

    JavaScript 2023年5月29日
    061
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球