CommonJS规范的特点

对于基本数据类型,属于复制。即会被模块缓存。同时,在另一个模块可以对该模块输出的变量重新赋值。
对于复杂数据类型,属于浅拷贝。由于两个模块引用的对象指向同一个内存空间,因此对该模块的值做修改时会影响另一个模块。
当使用require命令加载某个模块时,就会运行整个模块的代码。
当使用require命令加载同一个模块时,不会再执行该模块,而是取到缓存之中的值。也就是说,CommonJS模块无论加载多少次,都只会在第一次加载时运行一次,以后再加载,就返回第一次运行的结果,除非手动清除系统缓存。
循环加载时,属于加载时执行。即脚本代码在require的时候,就会全部执行。一旦出现某个模块被"循环加载",就只输出已经执行的部分,还未执行的部分不会输出

CommonJS与AMD

CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。
AMD规范则是非同步加载模块,允许指定回调函数。

由于Node.js主要用于服务器编程,模块文件一般都已经存在于本地硬盘,所以加载起来比较快,不用考虑非同步加载的方式,所以CommonJS规范比较适用。但是,如果是浏览器环境,要从服务器端加载模块,这时就必须采用非同步模式,因此浏览器端一般采用AMD规范

CMD和AMD

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

2.AMD推崇依赖前置(在定义模块的时候就要声明其依赖的模块),CMD推崇依赖就近(只有在用到某个模块的时候再去require——按需加载)。

3.AMD的api默认是一个当多个用,CMD严格的区分推崇职责单一。例如:AMD里require分全局的和局部的。CMD里面没有全局的 require,CMD里每个API都简单纯粹。

【AMD、CMD和CommonJS】相关推荐

  1. CommonJS,AMD,CMD,ES6,require 和 import 详解

    CommonJS,AMD,CMD,ES6 commonJS用同步的方式加载模块.在服务端,模块文件都存在本地磁盘,读取非常快,所以这样做不会有问题.但是在浏览器端,限于网络原因,更合理的方案是使用异步 ...

  2. 模块化(AMD、CMD、CommonJS、ES6)

    1,CommonJS 服务器,同步加载模块,加载机制是:输出拷贝 模块导出:module.exports 导入模块:require 2,AMD(异步模块定义) 用于浏览器,防止js加载阻塞页面渲染,异 ...

  3. 理解AMD ,CMD,CommonJS规范

    https://blog.csdn.net/xcymorningsun/article/details/52709608 理解AMD ,CMD,CommonJS规范 2016年09月30日 10:33 ...

  4. 让你的插件兼容AMD, CMD ,CommonJS和 原生 JS

    模块标准 // 支持AMD,CMD以及原生js的引用if (typeof module !== 'undefined' && typeof exports === 'object' & ...

  5. JS JavaScript模块化(ES Module/CommonJS/AMD/CMD)

    前言 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了, jQuery,Ajax,Node.Js,MVC,MVVM等的助力也使得 ...

  6. AMD、CMD、CommonJS、ES6(import/export)

    AMD.CMD.CommonJS.ES6(import/export) AMD.CMD.CommonJS是ES5模块化解决方案 AMD -- 异步模块 Asynchronous Module Defi ...

  7. 关于 CommonJS AMD CMD UMD 规范的差异总结

    根据CommonJS规范,一个单独的文件就是一个模块.每一个模块都是一个单独的作用域,也就是说,在一个文件定义的变量(还包括函数和类),都是私有的,对其他文件是不可见的. // foo.js var ...

  8. commonjs是什么_JavaScript模块化标准CommonJS/AMD/CMD/UMD/ES6Module的区别

    JS-模块化进程 随着js技术的不断发展,途中会遇到各种问题,比如模块化. 那什么是模块化呢,他们的目的是什么? 定义:如何把一段代码封装成一个有用的单元,以及如何注册此模块的能力.输出的值依赖引用: ...

  9. AMD、CMD、CommonJs、ES6的对比

    都是用于在模块化定义中使用 AMD.CMD.CommonJs是ES5中提供的模块化编程的方案 import/export是ES6中定义新增的 AMD-异步模块定义[依赖前置.异步定义] Require ...

  10. 浅析JS模块规范:AMD,CMD,CommonJS

    from:https://www.jianshu.com/p/09ffac7a3b2c 随着JS模块化编程的发展,处理模块之间的依赖关系成为了维护的关键. 模块化 AMD,CMD,CommonJS是目 ...

最新文章

  1. python类库31[文件和目录os+os.path+shutil]
  2. ThreadPoolExecutor 八种拒绝策略,对的,不是4种
  3. C#中写入Excel
  4. Git 本地仓库与远程仓库链接
  5. SQL SERVER 2008 R2最大并发连接数修改为2后,SQL连接无法超过2个。
  6. 泰勒公式推导过程_#泰勒#(Taylor)公式真的很难很难吗?
  7. python如何调用阿里云接口_python 调用阿里云云解析api添加记录
  8. Version Control
  9. 熊市投身区块链,程序员的出路在哪里?
  10. Vue3中获取鼠标在浏览器x轴和y轴的位置
  11. php sqlserver 日期转字符串,sqlserver  时间(datetime)转换成字符串
  12. 进击的Libra:路在何方?中国应如何应对?
  13. Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs;
  14. @RunWith注解找不到,怎么办?
  15. 让汉字快速匹配拼音、你不知道的快速方法
  16. 2022-2028全球LED气球灯行业调研及趋势分析报告
  17. 软件测试工程师这个岗位职责是什么?具体都需要干什么?
  18. postGIS错误line_locate_point: 1st arg isnt a line
  19. 什么才是一个量化交易策略的核心?
  20. 网页实现制作一个小日历

热门文章

  1. 有10名学生,每个学生的数据要求包括学号、姓名。3门课的成成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩以及最高分学生的数据(包括学号、姓名、三门课成绩、平均分数)。C++。
  2. Kali linux虚拟机设置1920x1080分辨率
  3. python通信技术_一起学Python:网络通信过程
  4. CVX约束中需要使用一些中间变量该怎么办
  5. python基础-元组、集合 、字典
  6. 基于Python实现Jacobi迭代法、Gauss-Seidel迭代法和SOR法方程组(二)
  7. 超过100项改进 100tv聚好看全新发布
  8. 图片怎么转换成PDF格式?这两种方法赶紧记下
  9. 数字通信调制方式的误码率matlab仿真,包括OOK,PRK,FSK以及QAM
  10. 中国计算机语言学,【CCL 2019】中国计算语言学大会(CCL 2019)技术评测报告以及研讨会...