cmd,全称(Common Module Definition)公共模块定义规范
sea.js 实现了此规范
引入:
再html代码中,直接引入sea.js,然后,在另一块js代码中,使用sea中提供得seajs
调用use方法,传入入口文件路径,如seajs.use('./index')
<script src="./sea.js"></script>
<script>
seajs.use('./index')
</script>
使用:
和amd规范一样,都是使用define
函数,不同的是,传入得一般是一个函数,该函数接收三个参数,分别是require,exports,module
。这里就跟我上一篇amd规范得最后一样了。其实,require.js最开始是没有这种使用方法的,后来看cmd的这种方法好用,就也实现了cmd规范。
不过要注意的是,这种方法使用起来,跟commonjs是差不多的,只不过多套了一个函数而已,但是这也造成了一种结果,就是require导入模块是同步的,所以如果需要异步导入,sea.js中提供了require.async(模块路径, function () {})
define(function (require, exports, module) {
const a = require('a')
const b = require.async('b', function (b) {
console.log(b)
})
})
最后再提一嘴,和amd不同的是,cmd在加载模块之后,会把相应的script元素删除掉,将该模块导出的结果缓存在内存中,而amd则不会删除相应的script元素。
网友评论