blog icon indicating copy to clipboard operation
blog copied to clipboard

前端模块化 - CMD 规范

Open HXWfromDJTU opened this issue 4 years ago • 0 comments

溯源

CMD 规范集合了CommonJS 和 AMD,取长补短。其最有名的实现是射雕的sea.js

语法规范

模块定义

define(function(require, exports, module) {
    // 同步引入模块
    const module2 = require('./module2')

    // 异步引入模块
    const module1 = require('./module3', function (module3) {
        cosnole.log(module3)
    })

    const name = 'module1'

    const getName = function () {
        return name
    }

    // 模块暴露
    module.exports.module1 = {
        getName
    }å
})

模块暴露

define(function(require, exports, module) {
    // 模块暴露
    module.exports.module1 = {
        getName
    }   
})

AMD的不同点

  • AMD对代码的态度是预执行
  • CMD对代码的态度是懒执行(也就是上面说的依赖就近),比如SeaJS就是在代码需要用到包的内容时候,内核才会去异步地调用这些包。(不同于AMD所有的包都在一开始就加载)

缺点

  • 依赖spm进行打包(spmsea.js的打包工具)
  • 射雕貌似不再维护了

HXWfromDJTU avatar May 17 '20 09:05 HXWfromDJTU