前端之cmd模块化规范

2022-01-05  本文已影响0人  web前端_潘哥哥

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元素。

上一篇下一篇

猜你喜欢

热点阅读