• 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
     
  • 相关阅读:
    P4396 [AHOI2013]作业 分块+莫队
    B1965 [Ahoi2005]SHUFFLE 洗牌 数论
    B1970 [Ahoi2005]Code 矿藏编码 暴力模拟
    B1968 [Ahoi2005]COMMON 约数研究 数论
    B1237 [SCOI2008]配对 贪心 + dp
    B1108 [POI2007]天然气管道Gaz 贪心
    B1734 [Usaco2005 feb]Aggressive cows 愤怒的牛 二分答案
    B1012 [JSOI2008]最大数maxnumber 分块||RMQ
    HAOI2007 反素数
    NOIP2009 Hankson的趣味题
  • 原文地址:https://www.cnblogs.com/gpzhen/p/7215954.html
Copyright © 2020-2023  润新知