CommonJS,AMD,CMD规范-创新互联

1. Javascript 先天缺乏模块的功能。在其他高级语言中,Java有类文件,Python有import机制,Ruby有require,PHP有include和require,而Javascript 则需要依靠<script>标签引入代码,当脚本多的时候,会显得杂乱无章。

成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站制作、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的滨海网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

2. 针对以上问题,CommonJS应运而生。CommonJS为Javascript制定了一个美好愿景:能够在任何地方运行!(Not just for browser), CommonJS希望弥补Javascript没有标准的缺陷(没有模块系统,标准库较少,没有标准接口,缺乏包管理系统),可以编写大型应用,如服务器端Javascript,命令行工具,桌面图形界面应用程序,混合应用等。

3. CommonJS规范涵盖:

模块、二进制Buffer, 字符集编码,I/O流,进程环境,文件系统,套接字,web服务器网管接口,包管理等。

4. Node.JS遵循CommonJS规范,推进了CommonJS的发展.

5. CommonJS主要是为了JS在后端的表现制定的,不适合前端。为什么这么说呢?

前后端Javascript分别被搁置在HTTP的两端,二者扮演的角色不同:


浏览器端Javascript

服务器端Javascript

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

瓶颈

在于带宽

在于CPU和内存资源

代码加载方式

需要通过网络加载代码

从磁盘加载代码(二者速度不在一个数量级上)

6. 于是AMD出现了,Asynchronous Module Definition. 异步模块定义。

        它就主要为前端JS的表现制定规范。

AMD规范只有一个API,其模块定义如下:

define(id?,dependencies?,factory); //id,dependencies可选,factory内容就是实际代码的内容。

a. Id:模块标识,可以省略,这里的模块标识指的是自己,即整个文件。所以当id省略的时候,就相当于定义了一个匿名模块,这时候模块文件名就是 模块标识。e.g.模块文件放在a.js中,那么a就是模块名。

b.  dependencies: 依赖的模块。AMD规范要在声明模块的时候指定所有的依赖,并且还要当做形参传到factory里面。例如:

define(['dep1', 'dep2'], function ( dep1, dep2 ){ … });

一个不包含依赖关系的例子:

define(function(){

var exports = {};

exports.method = function(){ ...};

return exports;

...

});

c. 从define函数中不难想到define函数具有异步性。它在执行时首先会异步去调用第二个参数中列出的依赖模块,当所有模块被载入完成后,如果第三个参数是一个回调函数则执行。

d. 在Node.js中,没有看到define将模块包起来,是因为Node实现了隐式包装(即在对模块进行 编译时,node会对模块进行头尾包装,以隔离各个模块文件,防止变量污染)。

e. requireJS就是实现了AMD规范。

7. CMD规范由国内的玉伯提出,与AMD规范的区别在于定义模块和依赖引入的部分。风格更接近于Node.可以看看Sea.js。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

网站题目:CommonJS,AMD,CMD规范-创新互联
本文链接:https://www.cdcxhl.com/article38/cspisp.html

成都网站建设公司_创新互联,为您提供商城网站品牌网站设计营销型网站建设网站营销电子商务搜索引擎优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站建设网站维护公司