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

一、commonJS

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

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

模块输出与加载
2.nodejs中的模块化机制,模块通过require()引入,exports或modules.exports导出
常用于:服务器端,node,webpack

二、AMD

特点
1.异步加载:因为面向浏览器端,为了不影响渲染肯定是异步加载
2.依赖前置:所有的依赖必须写在最初的依赖数组中,速度快,但是会浪费资源,预先加载了所有依赖不管你是否用到
3.AMD规范则是非同步加载模块,允许指定回调函数。

三、CMD


1.是需要的时候去请求,而不是先加载再使用。
2.RequireJS用的就是AMD,AMD用define定义方法,用require引用模块
特点
1.异步加载
2.按需加载 / 依赖就近:用到了再引用依赖,方便了开发,缺点是速度和性能较差。

 

四、AMD与CMD的区别

AMD推崇依赖前置,在定义模块的时候就要声明其依赖的模块。
CMD推崇就近依赖,只有在用到某个模块的时候再去require。
对于依赖的模块AMD是提前执行,CMD是延迟执行。不过RequireJS从2.0开始,也改成可以延迟执行(根据写法不同,处理方式不通过)。
AMD推崇依赖前置,AMD的api默认是一个当多个用,CMD严格的区分 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值