这里define是一个全局函数,用来定义模块,并通过exports向外提供接口。之后,如果要使用某模块,可以通过require来获取该模块提供的接口。最后使用某个组件的时候,通过seajs.use()来调用。
通过exports暴露接口。这意味着不需要命名空间了,更不需要全局变量。
通过require引入依赖。这可以让依赖内置,我们只需要关心当前模块的依赖。关注度分离
CMD推崇依赖就近,延迟执行。在上面例子中,通过require引入的模块,只有当程序运行到此处的时候,模块才会自动加载执行。
同时推出了spm(static package manager)的打包方式,听说支付宝的项目在使用。
UMD && webpackUMD文档
UMD(Universal Module Definition - 通用模块定义)模式,该模式主要用来解决CommonJS模式和AMD模式代码不能通用的问题,并同时还支持老式的全局变量规范。
判断define为函数,并且是否存在define.amd,来判断是否为AMD规范,
判断module是否为一个对象,并且是否存在module.exports来判断是否为CommonJS规范
如果以上两种都没有,设定为原始的代码规范。
这种模式,通常会在webpack打包的时候用到。