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

本站公眾號
   歡迎關注本站公眾號,獲取更多信息