几句话看懂CommonJs和AMD标准

ECMAScript 规范是为了统一Javascript;

一、CommonJS

(1)加载方式为同步加载;

(2)CommonJS统一了Javascript在浏览器之外的实现;

(3)CommonJS 规范包括了模块(modules)、包(packages)、系统(system)、控制台(console)、二进制(binary)、编码(encodings)、文件系统(filesystems)、套接字(sockets)、单元测试(unit testing)等部分 ;

(4)其中,对于模块的操作主要有:module,exports,require,global等;

注意:

要和ES6的import和export作区别,ES6导出的是变量,是引用;而CommonJS导出的是对象,是拷贝,如果模块内的变化,则不会再影响到已经倒出的;

ES6模块是编译时加载,可以实现静态分析;commonjs是运行时加载;

(5)由于JavaScript官方定义的 JS API只能构建基于浏览器的应用程序,CommonJS API定义了很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白;

二、AMD(Asynchronous Module Definition)

(1)规定了在客户端的模块概念;

(2)采用异步方式加载模块;由于CommonJS的模块加载require是同步的,在服务端,因为所有的模块都放再本地硬盘,所有使用同步的方式可以很快的完成加载;但是,对于浏览器而言,所有的模块不在本地,使用同步的方式不友好,且在网速不好的模式下,浏览器会进入假死的状态,所以AMD诞生了。

AMD也采用require()语句加载模块,但是不同于CommonJS,它要求两个参数:

require([module], callback);

第一个参数[module],是一个数组,里面的成员就是要加载的模块;

第二个参数callback,则是加载成功之后的回调函数;

(3)require.js的诞生:

采用传统的<script src="1.js"></script>的写法加载JS模块时,问题:

首先,加载的时候,浏览器会停止网页渲染;

然后,由于JS之间具有依赖关系,所以必须要保证加载的顺序;

为了解决这两个问题,require.js诞生了,它可以:

实现js文件的异步加载,避免网页失去响应;

管理模块之间的依赖性,便于代码的编写和维护;

 

Node,CommonJS,浏览器W3C之间的关系;

|------------浏览器-------------|  |------------CommonJS--------------|

|BOM|  |DOM|  |ECMAScript|  |FS|  |TCP|  |Stream| |Buffer| |....|

|------W3C----|  |----------------------------Node---------------------|

服务端和浏览器端中使用JS的区别

                     服务器端JS|浏览器端JS

相同的代码需要多次执行|代码需要从一个服务器端分发到多个客户端执行

   CPU和内存资源是瓶颈|带宽是瓶颈

 加载时从服务器磁盘中加载|加载时需要通过网络加载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值