JavaScript模块化(四)CMD

CMD(Common Module Definition)

介绍


CMD依赖于sea.js,在语法上杂糅了CommonJS和AMD,可以同时使用同步加载和异步加载,适用于web浏览器端模块,同样的,在CMD中,一个文件代表一个模块
现在CMD似乎是被国外收购了,登上seajs.org会显示以下的内容
在这里插入图片描述
但我们还是可以在中文文档中看到sea.js的API:https://www.zhangxinxu.com/sp/seajs/ ,国内还有一些老项目也还在使用sea.js,所以还是有必要学习了解以下的

sea.js语法


sea.js基本语法采用define(function(){}),看似和AMD一样,但是sea.js不管有没有暴露模块或者引入模块,都只有这一个参数,通过给这个参数方法传入不同的参数来达到引入模块和暴露模块的效果

只需引入的模块
define(function(require){
    // 引入同步依赖
    var module1  = require('./module1');
    // 引入异步依赖
    require.async('./module2',function(m3){
        // 回调方法
    })
})

require表示引入依赖,如通CommonJS的require一样,但是有一点不同的是,在CMD中,可以通过使用require.async来异步引入模块,require.async传入两个参数,第一个参数为要导入的模块,第二个参数为导入模块成功后的回调函数,即异步处理

需要暴露的模块

无依赖的模块

define(function(require,exports,module){
    // ...
    // 暴露模块
    exports.xxx = val;
    module.exports = val;
})

有依赖的模块

define(function(require,exports,module){
    // ...
    // 暴露模块
    exports.xxx = val;
})

这里的exports和module和CommonJS中的module.exports一个道理,也是将exports对象输出,module指向的就是本模块,而exports指向的是module.exports

在浏览器中引入
<script type="text/javascript" src="js/libs/sea.js"></script>
<script>
    seajs.use("./js/main.js")
</script>

通过使用seajs.use()方法引入main.js,再通过main.js去依赖各个模块来加载所有的模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值