AMD&CommonJS

时间:2023-03-09 01:50:26
AMD&CommonJS

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

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

两者在开发的过程中也有自己的不同点:

  (1) CommonJS定义一个单独的文件就是一个模块,通过exports返回,比如:

  文件//message.js

  exports.message = {

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

  };

  在另外一个文件中,就可以通过require的方式对它进行加载:

  文件//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