位置: 编程技术 - 正文

浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结(浅析科学发展观的核心立场)

编辑:rootadmin

推荐整理分享浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结(浅析科学发展观的核心立场),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:浅析和浅谈的区别论文,浅析科学发展观的核心立场,浅析是什么意思,浅析新时代十年伟大变革的里程碑意义,浅析中国式现代化的理论价值与现实意义,浅析新时代十年伟大变革的里程碑意义,浅析新时代十年伟大变革的里程碑意义,浅析是什么意思,内容如对您有帮助,希望把文章链接给更多的朋友!

这是一篇关于javascript模块化AMD,CMD,CommonJS的学习总结,作为记录也给同样对三种方式有疑问的童鞋们,有不对或者偏差之处,望各位大神指出,不胜感激。

本篇默认读者大概知道require,seajs的用法(AMD,CMD用法),所以没有加入使用语法。

1、为何而生:

这三个规范都是为javascript模块化加载而生的,都是在用到或者预计要用到某些模块时候加载该模块,使得大量的系统巨大的庞杂的代码得以很好的组织和管理。模块化使得我们在使用和管理代码的时候不那么混乱,而且也方便了多人的合作。

2、那些规范们:

(1)、CommonJS 是一个有志于构建 JavaScript 生态圈的组织。整个社区致力于提高 JavaScript 程序的可移植性和可交换性,无论是在服务端还是浏览器端。

a group with a goal of building up the JavaScript ecosystem for web servers, desktop and command line apps and in the browser.

一个有目标的构建JavaScript生态系统Web服务器组,在浏览器和命令行应用程序和桌面。(他自己wiki上这么说的)

这个组织呢制定了一些规范 (可以去他们网站看看 Modules/1.0 规范,我们平时所说的commonjs规范,说的就是这个了。

“The CommonJS API will fill that gap by defining APIs that handle many common application needs, ultimately providing a standard library as rich as those of Python, Ruby and Java. ”--(出自 根据CommonJS规范,一个单独的文件就是一个模块。加载模块使用require方法,该方法读 取一个文件并执行,最后返回文件内部的exports对象。

他又说了,可以用在下面这些场景 ,所以他更明显的偏向服务器端。当然你也可以把它用在浏览器里边(他们自己说可以)。

&#;Server-side JavaScript applications&#;Command line tools&#;Desktop GUI-based applications&#;Hybrid applications (Titanium, Adobe AIR)

(2)、AMD规范

Commonjs解决了模块化的问题,并且可以用在浏览器中,但是Commonjs是同步加载模块,当要用到该模块了,现加载现用,这种同步机制到了浏览器里边就有问题了,加载速度啊啥的(览器同步加载模块会导致性能、可用性、调试和跨域访问等问题)。

鉴于浏览器的特殊情况,又出现了一个规范,这个规范呢可以实现异步加载依赖模块,并且会提前加载那就是AMD规范。AMD可以作为CommonJS模块一个中转的版本只要CommonJS没有被用来同步的require调用。使用同步require调用的CommonJS代码可以被转换为使用回调风格的AMD模块加载器( (它说的)。

浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结(浅析科学发展观的核心立场)

下面是一个使用了简单CommonJS转换的模块定义(它是amd规范的一种用法):所以说AMD和Commonjs是兼容的,只要稍稍调换一下调用方法就实现了同步加载(我很怀疑amd也是在commonjs基础上加了个壳,然后并没有找到其他的神马说明和支持的文字,找到了一定加到这)。

看一下AMD规范你会发现,AMD基本都是提前说明依赖模块,然后预加载这些模块,实际上这就要求你提前想好这些依赖,提前写好,不然写代码过程中要回到开头继续添加依赖。

 (3)、CMD

不知道是不是针对这个问题,淘宝的玉伯大牛搞了个seajs出来,并声称这个规范是遵循CMD规范的,然后给出了这个规范的一个连接(打开会发现draft字样)。关于这个规范呢玉伯在知乎是这么说的

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

CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。类似的还有 CommonJS Modules/2.0 规范,是 BravoJS 在推广过程中对模块定义的规范化产出。还有不少&#;&#;“

所以这个规范实际上是为了Seajs的推广然后搞出来的。那么看看SeaJS是怎么回事儿吧,基本就是知道这个规范了。

同样Seajs也是预加载依赖js跟AMD的规范在预加载这一点上是相同的,明显不同的地方是调用,和声明依赖的地方。AMD和CMD都是用difine和require,但是CMD标准倾向于在使用过程中提出依赖,就是不管代码写到哪突然发现需要依赖另一个模块,那就在当前代码用require引入就可以了,规范会帮你搞定预加载,你随便写就可以了。但是AMD标准让你必须提前在头部依赖参数部分写好(没有写好? 倒回去写好咯)。这就是最明显的区别。

3、共生共处

由于CommonJS是服务器端的规范,更另外两个标准实际不冲突。

AMD在国外用的更多,当然国内也是不少的,jQuery1,7版本开始使用,Dojo在1.6版本开始用,这已经能够证明它足够牛x了。

CMD当然也有很多人在用,但是基本都集中在国内,Seajs官网就展示了一大堆牛逼的公司在用(包括爱奇艺,腾讯微博,支付宝,淘宝等一大堆,去这看看 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible.2. CMD 推崇依赖就近,AMD 推崇依赖前置。

3. AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。 4. 还有一些细节差异,具体看这个规范的定义就好,就不多说了。 ( 好吧~第四点是不多说了。。。。。。。。。)

5、AMD和CMD的一些相同

都有difine和require,而且调用方式实际都可以添加依赖参数,也就是说都可以用提供依赖参数的方式来实现预加载依赖模块(但是不推荐因为 注意:带 id 和 deps 参数的 define 用法不属于 CMD 规范,而属于 Modules/Transport 规范。---来自: a = require('a'); // 加载模块a

有不妥之处,欢迎斧正。

以上这篇浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

教你用javascript实现随机标签云效果_附代码 标签云是一套相关的标签以及与此相应的权重。典型的标签云有至个标签。权重影响使用的字体大小或其他视觉效果。同时,直方图或饼图表是最常

盘点javascript 正则表达式中 中括号的【坑】 在javascript中使用正则时需要注意中括号里边的一个坑,那就是中括号内的元字符问题。自己踩到坑了,网上搜了一下还有不少人踩了这个坑,所以大概

Fullpage.js固定导航栏-实现定位导航栏 FullPage.js是一个简单而易于使用的插件,用来创建全屏滚动网站(也被称为单页网站)。除了可以创建全屏滚动效果以外,也可以给网站添加一些水平的

标签: 浅析科学发展观的核心立场

本文链接地址:https://www.jiuchutong.com/biancheng/377517.html 转载请保留说明!

上一篇:js纯数字逐一停止显示效果的实现代码(js数字跳动增加效果)

下一篇:教你用javascript实现随机标签云效果_附代码(教你用纸折一只会跳的小兔子,非常好玩,小朋友都喜欢)

  • 保险中的车
  • 一般纳税人开具的普票可以抵扣吗
  • 什么是应税所得率方式
  • 其他应收款在现金流量表怎么填
  • 其他应付款和其他应付款可以重分类
  • 上个月没有清卡,这个月可以抄税吗
  • 转登小规模以前的留抵税额能申请退吗
  • 经营所得与劳务所得的税率
  • 企业注销盈利一定要交个税吗
  • 收到服务费发票摘要怎么写
  • 生产加工型企业经营范围
  • 其他应付款跨年如何应对
  • 建筑工程需要哪些部门审批
  • 法律责任的具体内容
  • 个人投资借款长期不还要缴纳个人所得税吗?
  • 个体各商户的社保
  • 不动产发票如何开具
  • 财会〔2017〕22号:《企业会计准则第14号收入》的通知
  • 积分现金兑换比例怎样计算
  • 没有销项税进项要交税吗
  • 租赁服务可以享受加计抵减吗
  • 降低增值税税率对消费者的影响有哪些
  • 房租税收怎么算?
  • 法定代表人的个人债务会执行公司财产么
  • 什么是留存收益项目
  • 如何看懂财务报表的书
  • 多缴的企业所得税如何处理
  • 公司补缴印花税怎么申报
  • 八个与cpu相关的字符
  • 其他应付款结转什么科目
  • 公司报销医疗费用公司医保里面的钱也报吗
  • 企业提取盈余公积会引起所有者权益变动吗
  • 购进运输服务取得的增值税专用发票准予抵扣进项税额吗
  • 矿产资源补偿费与采矿权价款区别
  • 小规模未达起征点免税分录
  • php修改图片尺寸
  • 股份有限公司都是私企吗
  • vue路由详解
  • 以前多计提的工资怎么办
  • 收到员工的社保费用记什么科目
  • mysql全局锁和表锁
  • 购销合同印花税最新政策2023
  • 税务三方协议怎么重签
  • 股权转让会计分录摘要怎么写
  • 汇算清缴没有调整怎么办
  • 待处理财产损益是什么类科目
  • 保险车辆理赔入账流程
  • 退回的以前年度的附加怎么申报
  • 公司开业前期费用谁出
  • 员工在工伤
  • 出库销售会计分录
  • 职工医保报销会扣医保卡的钱吗
  • 所有者权益科目有哪些
  • 其他应收款有哪些科目
  • 固定资产报废由谁审批
  • 建筑行业预收账款预缴税
  • 销售成本存在的问题
  • 关于爱在线观看电影完整版
  • 教你怎么使用加油机
  • sql里case
  • 苹果电脑macbookpro忘记密码
  • imessage如何群发
  • win7专业版系统镜像
  • win10 io1
  • centos查看硬件设备
  • bootstrap paginator分页插件的两种使用方式实例详解
  • jsp验证邮箱格式
  • AndroidSharedpreference数据共享
  • angular.js
  • js选择框全选
  • 运行node.js的应用程序服务器
  • 将一个目录复制到另一个目录下
  • typescript的type
  • Jar mismatch! Fix your dependencies
  • unity3d功能
  • WINDOWS中使用磁盘清理的主要作用是为了什么
  • 青岛市税务局内设机构
  • 雅阁交强险和车船税多少
  • 广州市地税局领导名单
  • 电子税务局无法导出申报表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设