天天看点

模块化之AMD

前言:

即将又是在北京的一个十一,突然想起了什么,去年好像十一也是在北京,也在**度过的。自从决全身心进入前端这个行当,也是很久没有这么安安静静地写一些东西了,以后的路很长,希望自己还是一样,一步一步地走踏实了。

正文:

       AMD ---------  Asynchronous Module Definition

      异步模块定义 

       1、define

     参数:

  • id

       模块标识  {String}          参数是可选的  

  • dependencies

       所依赖的模块  

  • factory

       模块的实现,或者一个JavaScript对象

  官方提供的一个例子:

  用require 和 exports

define("alpha",["require","exports","beta"],function(require,exports,beta){
       exports.verb = function(){
              return beta.verb();
              //or .... 
             // return require("beta").verb();
       }
});      

  一个匿名的模块,返回一个对象

define(["alpha"],function(alpha){
     return {
          verb:function(){
               return alpha.verb() + 2;
          }
    };
});      

  一个用简单的CommonJS包裹的方式来定义模块

define(function(require,exports,module){
       var a = require("a"),
             b = require("b");
       exports.action = function(){};
});      

  自由定义的模块可以定义一个对象

define({
    add:function(x,y){
          return x + y;
    }
});      

注释:

dependencies的顺序和factory参数是一一对应的。

扩展阅读:

1、https://github.com/amdjs/amdjs-api/wiki/AMD

继续阅读