Commonjs,umd,amd,cmd的区别

npm发包的时候用到一个概念, 就是要配置webpack的libraryTarget
不太明白Commonjs,umd,amd,cmd 的区别,所以学习了下

1. Commonjs规范:
  • 定义了非浏览器应用使用的API
  • 终极目标是提供一个类似python,ruby和java的标准库
  • 是服务端模块的规范,nodejs就是采用了这个规范
  • 一个文件就是一个模块,加载使用require方法,返回内部的exports对象
  • 同步加载
  • nodejs这种主要用于服务器的编程,加载的模块文件一般都已经存在在本地硬盘,所以加载起来比较快,不用考虑异步加载方式,所以commonjs 规范比较使用。
  • 但是如果是浏览器环境,要从服务器加载模块,就必须采用异步模式,所以就有了amd,cmd的解决方案
2.AMD规范
  • AMD 是requirejs 推广过程中对模块化定义的 规范化产出
  • 提前执行。2.0后也可以延迟执行
3.CMD规范
  • cmd 是seajs推广过程中对模块化定义的 规范化产出
  • 延迟执行
4.UMD 规范
  • umd 是AMD和commonjs 规范的糅合
  • 可以自己写判断,nodejs环境使用commonjs规范,浏览器使用amd规范

总结来说:显而易见,umd是最全能的

在使用commonjs2的时候,要使用require 方式引用,使用module.exports导出

commonjs2比commonjs多了,可以module.exports的方式导出

曾遇到一个bug,百度了下,说是webpack2+ import和module.exports不能混用
没有具体试下require的写法,只是把所有的写法都改成了ES6 的import语法,就好了


image.png

你可能感兴趣的:(Commonjs,umd,amd,cmd的区别)