AMD、CMD、CommonJS和ES6对比

1、AMD(异步模块定义)是RequireJS在推广过程中对模块定义的规范化产出,可动态的异步的加载模块

特点:依赖前置,也就是先定义后引用

基本语法:

 define('module',['dep1','dep2'],function(d1,d2){
         return someExportedValue;
     })
     
     require(['module','../file'],function(module,file){
     	/*..*/
     })

优点:1.适合浏览器环境中异步加载模块

          2.可以并行加载多个模块

缺点:1.提高开发成本,模块定义方式的语义不明确

          2.不符合通用的模块化思维方式,是一种妥协的实现

2、CMD(同步模块定义)   是seaJS在推广过程中对模块定义的规范化产出

    特点:所有模块都通过define定义,通过require引入依赖,依赖就近(在什么地方使用就在什么地方require)

   基本语法:  

define(function(require,exports,module){
         var $=require('jquery');
         var Spining=require('./spining');
         export.doSometing = ...
         module.exports = ...
    })

优点:1.依赖就近,延迟执行

          2.可以很容易在node.js中运行

缺点:依赖SPM打包,模块的加载逻辑偏重

3、CommonJS规范是通过module.export定义的,主要在node.js服务器端中使用,浏览器并不支持

   通过require方法来同步加载所需要依赖的其他模块,然后通过exports或module.exports来导出需要暴露的接口

 基本语法:

 
    require('module')
    require('../file.js')
    exports.doStuff=function(){}//导出,对外接口
    module.exports = someValue;

优点:1.服务器端模块重用

           2.简单并容易使用

缺点:1.同步的模块加载方式不适合在浏览器环境中,同步意味着阻塞加载,而浏览器资源是异步加载的

          2.不能非阻塞的并行加载多个模块

4.ES6特性

export导出,import导入

例如

  export default{//default代表默认导出
     components:{
        MHeader,
        Tab
     }
  }
import header from './components/header/header' //导入


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值