AMD规范、CMD规范、CommonJS

本文详细介绍了三种主流的模块加载规范:AMD、CMD 和 CommonJS。分别阐述了它们的特点、适用场景及核心优势。AMD 适用于浏览器环境,支持并行加载;CMD 强调按需加载,牺牲部分性能换取开发便利;CommonJS 在服务端使用广泛,加载过程同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图片描述

一、AMD规范

AMD规范,全称是Asynchronous Module Definition,即异步模块加载机制。完整描述了模块的定义,依赖关系,引用关系以及加载机制。

AMD的核心是预加载,先对依赖的全部文件进行加载,加载完了再进行处理。

实际上AMD 是 RequireJS 在推广过程中对模块定义的规范化的产出

优点:

适合在浏览器环境中异步加载模块。可以并行加载多个模块。 并可以按需加载。

RequireJS主要解决了两个问题:

  1. 多个js文件可能有依赖关系,被依赖的文件需要早于依赖它的文件加载到浏览器
  2. js加载的时候浏览器会停止页面渲染,加载文件越多,页面失去响应时间越长

requireJS的使用:https://www.jianshu.com/p/c90fff39c225

二、CMD规范

CMD规范:全称是Common Module Definition,即通用模块定义。按需加载。在 CMD 规范中,一个模块就是一个文件,使用define来进行模块,define是一个全局函数。

AMD和CMD最大的区别是对依赖模块的执行时机处理不同,而不是加载的时机或者方式不同,二者皆为异步加载模块。

异步加载:不阻碍后面代码加载执行

AMD依赖前置,js可以方便知道依赖模块是谁,立即加载;而CMD就近依赖,需要使用把模块变为字符串解析一遍才知道依赖了哪些模块,这也是很多人诟病CMD的一点,牺牲性能来带来开发的便利性,实际上解析模块用的时间短到可以忽略。

SeaJs使用:https://www.jianshu.com/p/ebdf2233e3fe

三、CommonJS规范

这种写法适合服务端,因为在服务器读取模块都是在本地磁盘,加载速度很快。

CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。

所有代码都运行在模块作用域,不会污染全局作用域。

模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。

模块加载的顺序,按照其在代码中出现的顺序。

参考:https://www.jianshu.com/p/09ffac7a3b2c

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值