CMD、AMD、CommonJS 规范

为什么要使用模块化?

最主要的目的:

  • 解决命名冲突
  • 依赖管理

其他价值:

  • 提高代码可读性
  • 代码解耦,提高复用性

CMD、AMD、CommonJS 规范分别指什么?有哪些应用

模块的规范:
定义一个统一的前提,大家必须以同样的方式编写模块。

  • CommonJS:
    CommonJS是服务器端模块的规范。
  1. 在一个模块中,存在一个自由的变量require,他是一个函数
    • 这个require函数接受一个模块标识符
    • require返回外部模块所输出的API
    • 如果出现依赖闭环,那么外部模块在被他的传递一台所require的时候可能并没有执行完成;在这种情况下,require返回的对象必须至少包含此外部模块在调用require函数之前就已经准备完毕输出
    • 如果请求的模块不能返回,那么require必须抛出一个错误
  2. 在一个模块中,会存在一个名为exports的自由变量,它是一个对象,模块可以在执行的时候把自身的API加入其中
  3. 模块必须使用exports对象做唯一表示
  • CMD:
    是SeaJS推广过程中诞生的,在CMD规范中,一个模块就是一个文件,代码的书写格式如下
define(factory)
  • AMD:
    AMD(异步模块定义)指定一种机智,在该机制下模块和依赖可以异步加载。这对浏览器端尤其适用。
define(id?,dependencies?,factory);
  • id:定义中模块的名字,可选:如果没提供该参数,模块的名字应该默认为模块加载器请求的指定的脚本的名字。
  • dependencies:是一个当前模块依赖的,已被模块定义的模块标识的数组字面量。依赖参数是可选的。如果忽略次参数它应该默认为["require", "exports", "module"]。然而,如果工厂方法的长度属性小于3,加载器会选择以函数的长度属性指定的参数个数调用工厂方法。
  • 工厂方法,模块初始化要执行的函数或对象。如果为函数,他应该只被执行一次。如果是对象,此对象应该为模块的输出值。
    示例:
define('modal', ['jQuery', 'dialog'], function($, Dialog){
    $('.modal').show();
    Dialog.open();
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答 1.为什么要使用模块化? 要使用模块化,我们要知道什么是模块化?首先一个模块是为了实现特定功能的文件,模块化...
    GarenWang阅读 5,396评论 1 1
  • 示例代码地址 1. 为什么要使用模块化? 1.解决命名冲突 2.代码解耦,提高复用性 3.提高代码可读性 3.方便...
    candy252324阅读 3,770评论 0 0
  • 1.为什么要使用模块化? 当去执行某个文件的过程中,如果将全部代码写在同一个文件下,在命名变量时,有些变量是全局变...
    饥人谷_徐小坤阅读 2,854评论 0 0
  • 概念 1、为什么要使用模块化? 当代码规模较大或进行团队协作时,如果不实行模块化,有可能导致命名冲突----解决命...
    周花花啊阅读 4,216评论 0 3
  • 一、 为什么要使用模块化? 解决命名冲突 解决依赖管理 提高代码可读性 代码解耦,提高复用性 二、CMD、AMD、...
    Chy18阅读 2,924评论 0 0

友情链接更多精彩内容