AMD&CommonJS

最近在学习nodejs的KOA框架,在查资料的时候碰见了点问题,顺着信息一步一步找下去,让我了解了一下一直以来不是很明白的何时用AMD规范,何时用CommonJS规范问题。node

  1. CommonJS通常用于服务器端,由于CommonJS规范的加载是同步的,也就是只有加载完成,才能执行后面的操做,因为服务器的代码文件,通常存在于本地硬盘,因此加载起来比较快,在这个方面,使用CommonJS比较合适。
  2. AMD通常用于用户(浏览器)端,AMD规范的加载是异步的,容许加载哪一个先加载完就先执行哪一个内容,在访问过程当中,因为网络问题或电脑配置问题,请求资源速度不能获得很好的保障,因此使用异步更合适。

 

二者在开发的过程当中也有本身的不一样点:编程

  (1) CommonJS定义一个单独的文件就是一个模块,经过exports返回,好比:浏览器

  文件//message.js服务器

  exports.message = {网络

    console.log("this is a message module");框架

  };异步

  在另一个文件中,就能够经过require的方式对它进行加载:ide

  文件//use.js函数

  //加载学习

  var message = require('message');

  //使用下面的方法

  message.message();     ==> "this is a message module"

 

 

  (2) AMD规范是非同步的,容许指定回调函数,主要用于客户端编程。

  模块的开发方式,使用define方法

   //module a.js

  define([],function(){

    var obj = {

      show:function(){

        console.log("show");

      }

    }

    return obj;

  });

 

  //在b.js模块中引入a.js

  

  define(['a'],function(){

    var obj_b = {

      hideAfterShow:function(){

        a.show();

        console.log('hide');

      }

    }

    return obj_b;

  });

 

参考连接:http://www.open-open.com/doc/view/f7df10bb81c347f79b436faa85dcfd81

本站公众号
   欢迎关注本站公众号,获取更多信息