说说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严格的区分

相关文章
|
5月前
|
JavaScript 前端开发
node.js 导入导出模块(CommonJS模块化规范,ES6模块化规范)
node.js 导入导出模块(CommonJS模块化规范,ES6模块化规范)
61 1
|
7月前
|
JavaScript 前端开发 开发者
深入了解 AMD 和 CMD 规范:探索模块加载的世界(上)
深入了解 AMD 和 CMD 规范:探索模块加载的世界(上)
|
7月前
|
JavaScript 前端开发 开发工具
深入了解 AMD 和 CMD 规范:探索模块加载的世界(下)
深入了解 AMD 和 CMD 规范:探索模块加载的世界(下)
|
JavaScript 前端开发 开发者
各种模块化方案的解释-AMD-CMD-Module
各种模块化方案的解释-AMD-CMD-Module
57 0
|
JavaScript 前端开发 UED
JavaScript中的AMD和CMD规范
JavaScript中的AMD和CMD规范
|
JavaScript 前端开发
深入了解前端开发规范的区别《Commonjs、AMD、CMD、ES6模块化》
深入了解前端开发规范的区别《Commonjs、AMD、CMD、ES6模块化》
119 0
|
JavaScript 前端开发
说说你对JavaScript模块化方案的理解和 CommonJS、AMD、CMD、ES6 Module 分别是什么?
模块化是指将一个复杂问题,自顶向下逐层把系统划分为若干模块的过程。对于整个系统来说,这些模块可组合,分解和更换的单元。对于编程领域的模块化就是遵守固定的原则,将一个大文件拆分成多个独立且相互依赖的小模块。简单理解模块化就是在一个js文件中能够引入另一个js文件
143 0
|
JavaScript API
AMD、CMD、commonJS模块化规范的区别
AMD、CMD、commonJS模块化规范的区别
111 0
|
存储 缓存 前端开发
前端模块化详解(CommonJS、AMD、CMD、ES Module)
本篇文章介绍了前端模块化的发展过程,以及常用的模块化规范。
734 1