RequireJS实现了AMD的API.

CommonJS是使用exports对象来定义模块的一种方法,它定义了模块的内容。简单地实现一个CommonJS的定义就像以下这样:

// someModule.js

exports.doSomething = function() { return "foo"; };

//otherModule.js

var someModule = require('someModule'); // in the vein of node

exports.doSomethingElse = function() { return someModule.doSomething() + "bar"; };

基本上CommonJS明白了你须要有一个require函数来获取依赖,exports变量来输出模块的内容和一些用来获取依赖的模块标识符。

CommonJS有多种实现。比方Node.js.

由于CommonJS设计的时候没有考虑浏览器,所以它不适合浏览器环境(我事实上对这个不明白,可是这样的说法到处都有,比方RequireJS官网)。所以我们得做一些工作来实现异步载入。

相反,RequireJS实现了AMD。它被设计用来适应浏览器环境。表面上看来,AMD開始是CommonJS输出格式的副产品,并且终于进化出了自己的API。

在AMD中出现的新东西是define函数。它同意模块在载入依赖之前声明它的依赖。比如定义可能就像以下这样:

define('module/id/string', ['module', 'dependency', 'array'],

function(module, factory function) {

return ModuleContents;

});

因此CommonJS和AMD是Javascript模块定义API的不同的实现。可是他们有同样的根源。AMD更适合浏览器,由于它支持异步载入模块依赖。RequireJS是AMD的一个实现,并且尽量保留了CommonJS的精神(主要是模块标识符上)。

更让人混乱的是,RequireJS在实现AMD的同一时候,还提供了一个CommonJS包裹,这样CommonJS模块能够差点儿直接被RequireJS引入。

define(function(require, exports, module) {

var someModule = require('someModule'); // in the vein of node

exports.doSomethingElse = function() { return       someModule.doSomething() + "bar"; };

});

CommonJS,AMD,RequireJS的差别的更多相关文章

  1. CommonJS,AMD,RequireJS的区别

    RequireJS实现了AMD的API. CommonJS是使用exports对象来定义模块的一种方法,它定义了模块的内容.简单地实现一个CommonJS的定义就像下面这样: // someModul ...

  2. JavaScript模块化编程 - CommonJS, AMD 和 RequireJS之间的关系

    这几天在学习CommonJS的时候突然在StackOverflow上搜索到一个非常好的一个帖子,是关于CommonJS, AMD和RequireJS之间的关系的问答贴.我感觉写的非常好,鉴于没有找到相 ...

  3. 关于 CommonJS AMD CMD UMD 规范的差异总结

    一.CommonJS 主要是用于服务器端的规范,比如目前的nodeJS. 根据CommonJS规范,一个单独的文件就是一个模块.每一个模块都是一个单独的作用域,也就是说,在一个文件定义的变量(还包括函 ...

  4. 关于 CommonJS AMD CMD UMD 规范的差异总结(转)

    根据CommonJS规范,一个单独的文件就是一个模块.每一个模块都是一个单独的作用域,也就是说,在一个文件定义的变量(还包括函数和类),都是私有的,对其他文件是不可见的. // foo.js var ...

  5. JavaScript模块化CommonJS/AMD/CMD/UMD/ES6Module的区别

    目录 JS-模块化进程 原始的开发方式 CommonJS && node.js AMD && Require.js CMD && Sea.js UMD ...

  6. CommonJS, AMD, CMD是什么及区别--简单易懂有实例

    CommonJS, AMD, CMD都是JS模块化的规范. CommonJS是服务器端js模块化的规范,NodeJS是这种规范的实现. AMD(异步模块定义)和CMD(通用模块定义)都是浏览器端js模 ...

  7. Commonjs,AMD,CMD和UMD的差异

    CommonJS 一种服务器端模块化的规范,Nodejs实现了这种规范,所以就说Nodejs支持CommonJS. CommonJS分为三部分: require 模块加载 exports 模块导出 m ...

  8. JavaScript模块化编程之AMD - requireJS基础使用

    JavaScript模块化编程之AMD requireJS基础使用 标签(空格分隔): JavaScript 参考文章 AMD规范 AMD是"Asynchronous Module Defi ...

  9. 前端模块化(CommonJs,AMD和CMD)

    前端模块规范有三种:CommonJs,AMD和CMD. CommonJs用在服务器端,AMD和CMD用在浏览器环境 AMD 是 RequireJS 在推广过程中对模块定义的规范化产出. CMD 是 S ...

随机推荐

  1. session理解

    Session,底层的实现就是一个Map<集合>,有些Data在Server内存中,APP要分层.Data在各个层之间肯定要以一种形态传递(泛型),之前Servlet dao.getLis ...

  2. Gym-101915C Shahhoud Training Hussain 模拟

    题面 题意:每天有K本书,你最多看P本一天,问N天后多少本书没有看 题解:ans=(K-P)*N; 注意一点就是P>=K的时候,ans=0; #include<bits/stdc++.h& ...

  3. C#解除某类警告。。。。。。。。。。

    C#预处理器指令取消不必要的警告 今天将自己写的一个类库生成一个DLL后,想把注释也加进去.... 方法:在属性->生成选项卡->XML文档文件(勾选)(生成的文件名不能修改,使用时必须跟 ...

  4. 如何修改 WordPress 数据库前缀

    我们知道 WordPress 的数据库表,可以设置前缀,默认是 wp_,很多同学也就默认用了 wp_,如果某种原因(比如提高安全性)要修改的 WordPress 数据的前缀,我们应该怎么做? 开始之前 ...

  5. jQuery访问json文件(一个例子)

    保存网址 打开时 点开一个类型 当点开一个类型,其他类型隐藏 回到所有类型 没有错,左下角有个这是什么样子的图标 做到了什么: 1.从json文件中取得网址,并根据访问次数排列,放到前面: 2.就是1 ...

  6. Kafka学习笔记(2)----Kafka的架构

    1. 架构图 一个Kafka集群中包含若干个Broker(消息实例),Kafka支持Broker横向扩展,Broker越多,吞吐量越大,同时也包含了若干个Producer(可以是web前端产生的Pag ...

  7. windows 端口号占用和解决方法

    https://blog.csdn.net/qq_39657909/article/details/80378983

  8. jmeter图片的上传

    首先添加一个线程组,然后在线程组里面添加一个http请求,因为是发送数据,所有是post请求,写好上传的地址,然后写好文件路径 1.添加线程组 :右键测试计划,添加-Threads(Users)-线程 ...

  9. tomcat-manager 设置

    tomcat默认是没有用户登录控制的,需要登录manager,则需要配置角色与用户 1. 在conf/tomcat-users.xml中添加 <role rolename="manag ...

  10. asyncio 自动跳出长时间堵塞的 task

    https://www.cnblogs.com/ywhyme/p/10660411.html 的升级版 可以知道当前是卡在哪一个 task 甚至是多少行 import asyncio import o ...