位置: 编程技术 - 正文

JavaScript模块规范之AMD规范和CMD规范(javascript模板)

编辑:rootadmin

推荐整理分享JavaScript模块规范之AMD规范和CMD规范(javascript模板),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js模块是什么意思,js模块化原理及实现过程,js模块化原理及实现过程,js模块化开发教程,js的模块化可以怎么做,JavaScript模块规范,js 模块 modules,JavaScript模块规范,内容如对您有帮助,希望把文章链接给更多的朋友!

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

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

一、AMD

AMD就只有一个接口:define(id&#;,dependencies&#;,factory);

它要在声明模块的时候制定所有的依赖(dep),并且还要当做形参传到factory中,像这样:

要是没什么依赖,就定义简单的模块,下面这样就可以啦

这里有define,把东西包装起来,那Node实现中怎么没看到有define关键字呢,它也要把东西包装起来,其实,只是Node隐式包装了而已..

RequireJS就是实现了AMD规范的

二、CMD

玉伯写了seajs,就是遵循他提出的CMD规范,比AMD稍微强大点,用起来感觉也方便些

三、AMD与CMD的区别

CMD相当于按需加载,定义一个模块的时候不需要立即制定依赖模块,在需要的时候require就可以了,比较方便;而AMD则相反,定义模块的时候需要制定依赖模块,并以形参的方式引入factory中

//AMD方式定义模块

//CMD

而SEAJS也有use功能也是需要先引入所有依赖的模块,如

四、插件支持

但全球有两种比较流行的 JavaScript 模块化体系,一个是 Node 实现的 CommonJS,另外一个是 AMD。很多类库都同时支持 AMD 和 CommonJS,但是不支持 CMD。或许国内有很多 CMD 模块,但并没有在世界上流行起来。

JavaScript模块规范之AMD规范和CMD规范(javascript模板)

现在比较火的 React 及周边类库,就是直接使用 CommonJS 的模块体系,使用 npm 管理模块,使用 Browserify 打包输出模块。不久的将来 ES6 中新的模块化标准,可能就都得遵循新的标准了,什么AMD、CMD可能到时也不会怎么用了。

但是目前来说,前端开发没有用模块化编程就真的out的了,而目前的模块化编程,本人还是建议用SEAJS,虽然很多插件需要追加或修改一小块代码才能支持。但改过一次就能反复使用,也不会影响其它标准的支持。总体还算是比较方便实用的。

单独解释AMD 与 CMD 区别到底在哪里?

看了以上 AMD,requireJS 与 CMD, seaJS的简单介绍会有点感觉模糊,总感觉较为相似。因为像 requireJS 其并不是只是纯粹的AMD固有思想,其也是有CMD规范的思想,只不过是推荐 AMD规范方式而已, seaJS也是一样。

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

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

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

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

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

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

区别:

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

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

// CMD

// AMD 默认推荐的是

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

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

CMD 里,每个 API 都简单纯粹。

4. 还有一些细节差异,具体看这个规范的定义就好,就不多说了。

JS实现浏览器状态栏显示时间的方法 本文实例讲述了JS实现浏览器状态栏显示时间的方法。分享给大家供大家参考,具体如下:以前做个人主页的时候,总喜欢把自己的网页搞的很个性,在

JS实现浏览器状态栏文字闪烁效果的方法 本文实例讲述了JS实现浏览器状态栏文字闪烁效果的方法。分享给大家供大家参考,具体如下:这里演示为你的IE浏览器状态栏增加文字闪烁效果,请看

JS基于Ajax实现的网页Loading效果代码 本文实例讲述了JS基于Ajax实现的网页Loading效果代码。分享给大家供大家参考,具体如下:这是一款很不错的网页Loading效果,常用于Ajax交互式网页设计

标签: javascript模板

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

上一篇:JS实现浏览器状态栏文字从右向左弹出效果代码(js浏览器运行机制)

下一篇:JS实现浏览器状态栏显示时间的方法(js实现浏览器状态栏显示)

  • 印花税处罚适用征管法吗
  • 实质课税原则是税法基本原则吗
  • 出差误餐补助是谁承担
  • 投标保证金保险怎么买
  • 新政府会计制度衔接预算会计需做好的账目清理工作有
  • 税率为0的发票长啥样
  • 公司工资0申报
  • 年报会计师审计费用
  • 个体工商户开普票流程
  • 工伤医疗费用个人社保卡支付找谁报销
  • 房地产限购过程是什么
  • 质押费用计入什么科目
  • 个体工商户怎么分配股份
  • 一般纳税人预交增值税会计记账
  • 发票章盖收据会被税务局罚款吗
  • 增值税发票过期了,对方可以重开吗
  • 接受捐赠的固定资产进项税额可以抵扣吗
  • 利润表本月金额指的是什么
  • 专票什么公司才能开
  • 一般纳税人注销库存需要补交税吗
  • 个人交社保可以交生育险吗
  • 哪些发票公司可以抵扣
  • 非居民纳税人享受协定待遇办理方式
  • 货币资金怎么核对账实相符
  • 销售固定资产的收入计入什么科目
  • 借用别人的公司经营
  • 王者荣耀中吕布的克星
  • 地方水利建设基金
  • 汇算清缴审计报告收费标准
  • 研发费用加计扣除75%还是100%
  • 机器设备的拆除,按照什么税目缴纳增值税
  • 外包员工的工资外包公司会扣吗
  • 出租固定资产取得的收入属于收入要素吗
  • 最小的手机有多大
  • 原材料预付款如何做账
  • 应收票据的基本要素包括
  • php框架yii
  • 瓦普拉克
  • bat开源项目
  • 前端解决跨域问题的8种方案(最新最全)
  • 居间协议合同范本完整版
  • 秸秆回收加工项目
  • 关联交易纳税调整期限
  • 伙食费怎么入账
  • 什么单位需要
  • 计提印花税会计分录
  • 没有收入有支出怎么处理账务
  • 管理费用月底结转吗
  • 代扣税是啥
  • 委托加工的材料成本包括运费吗
  • 非营利组织相关论文
  • 强化劳务输出
  • 企业收到政府专项奖励
  • 记账凭证的基本要素包括
  • 免税收入啥意思
  • 个体工商户和小规模纳税人的区别
  • 库存现金盘点表监盘人是谁
  • 长期股权投资损益调整怎么回事
  • 小企业建账选哪种会计制度
  • 会计报表分析的方法
  • 通过SQL绘制杨辉三角的实现方法介绍
  • win7系统IE浏览器打开跳转到360浏览器,怎么阻止
  • Ubuntu 12.04/14.04 LTS版内核更新 修复七个重大安全漏洞
  • 64位VMware虚拟机系统打不开怎么办?
  • Oracle VM Virtual中CentOS自动获取IP地址设置方法
  • SmartExplorer.exe - SmartExplorer进程是什么意思
  • win7旗舰版怎么改成专业版
  • centos6.5升级到7.5
  • linux纯文本浏览器
  • linux如何使用u盘
  • 垂直翻转画布
  • 机械革命系统重装官方教程
  • 完美世界3v3
  • jquery 打印方法
  • android 子线程间通信
  • 屏幕模式自适应模式
  • 福建2021年水利水电招聘
  • 天津市车船税收费标准2023
  • 重庆税务电子税登录
  • 企业所得税年报什么时候结束
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设