JS模块化开发规范

本文探讨了三种主流的JavaScript模块化规范:CommonJS适用于Node.js服务端,强调模块导出和同步加载;AMD如RequireJS,适用于浏览器,采用异步加载和命名空间;CMD如SeaJS,保持与CommonJS兼容但简化了异步处理。了解这些规范有助于提升前端开发效率和模块化实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS模块化开发规范

commonJS规范

Nodejs模块系统遵循此规范,适用于服务端

1、 规范定义

CommonJS规范规定,一个文件就是一个模块,用module变量代表当前模块。 Node在其内部提供一个Module的构建函数。所有模块都是Module的实例;
一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为global对象的属性;

2、 module.exports属性定义模块

module.exports属性表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量
例子
//moduleA.js
module.exports.funcA= function(){
console.log(‘This is moduleA!’);
}

3、模块引用

require函数的基本功能是,读入并执行一个JavaScript文件,然后返回该模块的exports对象。在moduleB模块中加载引入moduleA模块,便可以使用funA方法了,示例代码如下:

特点:
  • 每个文件都是一个module实例
  • 文件内通过require对象引入指定模块
  • 所有文件加载均是同步完成
  • 通过module关键字暴露内容
  • 每个模块加载一次之后就会被缓存

AMD规范

RequireJs JS模块加载器遵循此规范,适用于浏览器)
·1、定义模块:
define方法 define(id?, [deps,]?, factory);

解析参数:

  • 第一个参数,id(名字),是个字符串。它指的是定义中模块的名字,这个参数是可选的。如果没有提供该参数,模块的名字应该默认为模块加载器请求的指定脚本的名字。如果提供了该参数,模块名必须是“顶级”的和绝对的(不允许相对名字)。

  • 第二个参数,dependencies(依赖),是个定义中模块所依赖模块的数组。依赖模块必须根据模块的工厂方法优先级执行,并且执行的结果应该按照依赖数组中的位置顺序以参数的形式传入(定义中模块的)工厂方法中。

  • 第三个参数,factory(工厂方法),为模块初始化要执行的函数或对象。如果为函数,它应该只被执行一次。如果是对象,此对象应该为模块的输出值

  • 2、require方法:加载模块require([module], callback);

CMD规范

他是seaJS 模块加载器

  • 规范定义: CMD是国内大牛玉伯在开发SeaJS的时候提出来的,属于CommonJS的一种规范,根据浏览器的异步环境做了自己的实现。它和 AMD 很相似,尽量保持简单,并与 CommonJS 和 Node.js 的 Modules 规范保持了很大的兼容性

  • -define方法:定义模块
    efine( id?, [deps,]?, factory ); 前两个参数项可选
    define(‘hello’, [‘jquery’], function(require, exports, module) {
    // 模块代码

    });

    • require方法:加载模块
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值