JS 模块规范(CommonJs/AMD/CMD/ES6)

12 篇文章 0 订阅

CommonJS: 

commonJS主要用于 Node.js,输出方式有2种:默认输出---module export  和带有名字的输出---exports.area,引入方式为 required。

commonJs是同步加载,所以更适合用在服务端,因为服务端是磁盘读取。如果用在客户端,可能会造成阻塞。

AMD:

AMD是 required.js 所引出的一种规范,通过 required([Module], callback)来进行引入,其中 Module 里传一个数组,依次引入。然后在 callback 中将 module名作为参数使用。

AMD 模式整个过程是异步且依赖前置的,在定义前需要将在 Module 中声明。且 Module 中的模块加载完后立即执行,谁快就先执行谁。这样就导致了,AMD模式虽然运行速度很快,但是里面的代码执行顺序是不可控的,可能会产生大坑。

CMD:

define(function(require, exports, module) {
  var $ = require('jquery.js')
  $('div').addClass('active');
});

CMD 是 Sea.js的思想,它也是异步并行加载多个模块,不过 CMD 和 AMD 的区别在于,CMD 是在使用前再去 required 加载。虽然 CMD也会在一开始就下载好所有模块,但是确得等到使用前才执行。这样的好处是,整个代码的执行顺序是可控的,方便开发。缺点是执行模块的等待时间会叠加,速度慢。

ES6(import/export):

import/export 和上述的 required 最大的区别就在于,import 输出的是引入值,即导入和导出的值都指向同一个内存地址,所以导入值会随着导出值变化。而 required 是值拷贝,不会互相影响。

import 必须放在开头,required 则无所谓放哪都行。

required 支持动态引入,如:require(${path}/xx.js)。import 目前不支持。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值