说说AMD、CMD、commonJS模块化规范的区别?

简介: 说说AMD、CMD、commonJS模块化规范的区别?

AMD、CMD、commonJS模块化规范的理解

前言

这三个都是为Js模块化加载而生的,使模块能够按需加载,使系统同庞杂的代码得到组织和管理。模块化的管理代码使多人开发得到了更好的合作。

一、commonJS

定义模块

根据CommonJS规范,一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为global对象的属性

特点

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

模块输出与加载

nodejs中的模块化机制,模块通过require()引入,exportsmodules.exports导出

常用于:服务器端,nodewebpack

二、AMD

特点

  • 异步加载:因为面向浏览器端,为了不影响渲染肯定是异步加载
  • 依赖前置:所有的依赖必须写在最初的依赖数组中,速度快,但是会浪费资源,预先加载了所有依赖不管你是否用到

AMD规范则是非同步加载模块,允许指定回调函数。

三、CMD

  • 是需要的时候去请求,而不是先加载再使用。
  • RequireJS用的就是AMDAMDdefine定义方法,用require引用模块

特点

  • 异步加载
  • 按需加载 / 依赖就近:用到了再引用依赖,方便了开发,缺点是速度和性能较差。

四、AMD与CMD的区别

AMD推崇依赖前置,在定义模块的时候就要声明其依赖的模块。

CMD推崇就近依赖,只有在用到某个模块的时候再去require

对于依赖的模块AMD是提前执行,CMD是延迟执行。不过RequireJS从2.0开始,也改成可以延迟执行(根据写法不同,处理方式不通过)。

AMD推崇依赖前置,AMDapi默认是一个当多个用,CMD严格的区分

相关文章
|
7月前
|
JavaScript 前端开发 开发者
深入了解 AMD 和 CMD 规范:探索模块加载的世界(上)
深入了解 AMD 和 CMD 规范:探索模块加载的世界(上)
|
7月前
|
JavaScript 前端开发 开发工具
深入了解 AMD 和 CMD 规范:探索模块加载的世界(下)
深入了解 AMD 和 CMD 规范:探索模块加载的世界(下)
|
JavaScript 前端开发 开发者
各种模块化方案的解释-AMD-CMD-Module
各种模块化方案的解释-AMD-CMD-Module
58 0
|
JavaScript 前端开发 UED
JavaScript中的AMD和CMD规范
JavaScript中的AMD和CMD规范
|
JavaScript 前端开发
深入了解前端开发规范的区别《Commonjs、AMD、CMD、ES6模块化》
深入了解前端开发规范的区别《Commonjs、AMD、CMD、ES6模块化》
121 0
|
JavaScript API
AMD、CMD、commonJS模块化规范的区别
AMD、CMD、commonJS模块化规范的区别
111 0
|
编译器
【cmake】 --- 常用基础指令简介
【cmake】 --- 常用基础指令简介
77 0
|
Linux Python
【python】解决 python 项目移动linux上报 No module named 'xxxx' 错误
【python】解决 python 项目移动linux上报 No module named 'xxxx' 错误
289 0
|
JavaScript 前端开发
js 模块化基础和模块规范AMD、CMD、ES6模块
js 模块化基础和模块规范AMD、CMD、ES6模块
118 0