CommonJS


 CommonJS就是為JS的表現來制定規范,因為js沒有模塊的功能所以CommonJS應運而生,它希望js可以在任何地方運行,不只是瀏覽器中。

 
Node,CommonJS,瀏覽器甚至是W3C之間有什么關系:
 
CommonJS定義的模塊分為:{模塊引用(require)} {模塊定義(exports)} {模塊標識(module)}
 
require()用來引入外部模塊;exports對象用於導出當前模塊的方法或變量,唯一的導出口;module對象就代表模塊本身

 //sum.js
 exports.sum = function(){...做加操作..};
 
 //calculate.js
 var math = require('sum');
exports.add = function(n){
    return math.sum(val,n);
 };

 
 
雖說Node遵循CommonJS的規范,但是相比也是做了一些取舍,填了一些新東西的。
 
不過,說了CommonJS也說了Node,那么我覺得也得先了解下NPM了。NPM作為Node的包管理器,不是為了幫助Node解決依賴包的安裝問題嘛,那它肯定也要遵循CommonJS規范啦,它遵循包規范(還是理論)的。
 
CommonJS WIKI講了它的歷史,還介紹了modules和packages等。
 
 
 
二、AMD
 
CommonJS是主要為了JS在后端的表現制定的,他是不適合前端的,為什么這么說呢?
 
這需要分析一下瀏覽器端的js和服務器端js都主要做了哪些事,有什么不同了:

於是乎,AMD(異步模塊定義)出現了,它就主要為前端JS的表現制定規范。
 
AMD就只有一個接口:define(id?,dependencies?,factory);
 
它要在聲明模塊的時候制定所有的依賴(dep),並且還要當做形參傳到factory中,像這樣:
 
 
 
 define(['dep1','dep2'],function(dep1,dep2){...});
 

 
define(function(){
     var exports = {};
     exports.method = function(){...};
     return exports;
 });
 
 
咦,這里有define,把東西包裝起來啦,那Node實現中怎么沒看到有define關鍵字呢,它也要把東西包裝起來呀,其實吧,只是Node隱式包裝了而已.....
 
RequireJS就是實現了AMD規范的呢。

 
來源:http://www.2cto.com/kf/201411/348276.html
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM