关于各大协议

http协议:HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。


AMD协议:AMD规范就是其中比较著名一个,全称是Asynchronous Module Definition,即异步模块加载机制。从它的规范描述页面看,AMD很短也很简单,但它却完整描述了模块的定义,依赖关系,引用关系以及加载机制。从它被requireJS,NodeJs,Dojo,JQuery使用也可以看出它具有很大的价值,没错,JQuery近期也采用了AMD规范。在这篇文章中,我们就将介绍AMD的性质,用法,优势以及应用场景。从AMD中我们也能学习到如何在更高层面去设计自己的前端应用。

AMD CMD区别

模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式。可以想象一个巨大的系统代码,被整合优化分割成逻辑性很强的模块时,对于软件是一种何等意义的存在。对于软件行业来说:解耦软件系统的复杂性,使得不管多么大的系统,也可以将管理,开发,维护变得“有理可循”。

还有一些对于模块化一些专业的定义为:模块化是软件系统的属性,这个系统被分解为一组高内聚,低耦合的模块。那么在理想状态下我们只需要完成自己部分的核心业务逻辑代码,其他方面的依赖可以通过直接加载被人已经写好模块进行使用即可。

首先,既然是模块化设计,那么作为一个模块化系统所必须的能力:

   1. 定义封装的模块。

   2. 定义新模块对其他模块的依赖。

   3. 可对其他模块的引入支持。

 

AMD  CMD 区别到底在哪里?

 下面是玉伯对于 AMD  CMD 区别的解释:

 

   AMD  RequireJS 在推广过程中对模块定义的规范化产出。

   CMD  SeaJS 在推广过程中对模块定义的规范化产出。

 

   类似的还有 CommonJS Modules/2.0 规范,是 BravoJS 在推广过程中对模块定义的规范化产出还有不少??

 

   这些规范的目的都是为了 JavaScript 的模块化开发,特别是在浏览器端的。

    目前这些规范的实现都能达成浏览器端模块化开发的目的。

 

    区别:

 

   1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS  2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy aspossible.

   2. CMD 推崇依赖就近,AMD 推崇依赖前置。看代码:

 

// CMD

define(function(require, exports, module) {

   var a = require('./a')

   a.doSomething()

   // 此处略去 100 

   var b = require('./b') // 依赖可以就近书写

   b.doSomething()

   // ...

})

 

// AMD 默认推荐的是

define(['./a', './b'], function(a, b) { // 依赖必须一开始就写好

   a.doSomething()

   // 此处略去 100 

   b.doSomething()

   // ...

})

 

虽然 AMD 也支持 CMD 的写法,同时还支持将 require 作为依赖项传递,但 RequireJS 的作者默认是最喜欢上面的写法,也是官方文档里默认的模块定义写法。

   3. AMD  API 默认是一个当多个用,CMD  API 严格区分,推崇职责单一。比如 AMD 里,require 分全局require 和局部 require,都叫 requireCMD 里,没有全局 require,而是根据模块系统的完备性,提供seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。

   4. 还有一些细节差异,具体看规范的定义就好。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值