commonJs、AMD、UMD、es6 到底是怎么用的

https://segmentfault.com/a/11... 这篇文章写的比较详细,但是有一些以前困惑我的点还是需要单独记一下的。
commonjs
Node 应用由模块组成,采用 CommonJS 模块规范。也就是说CommonJs是应用在node服务器端的,如果浏览器想使用CommonJs规范的话需要用 browserify库 来进行转化。CommonJs分为两部分:moudle对象和requeire命令。也就是说要用 node 执行的代码,就只能遵循 commonjs 规范,使用 module.export 对象导出,使用 require 方法导入。想要写 export default / import 之类的 node 端执行的代码就需要单独配置(网上另找)。node 内部提供一个 module 的构建函数直接使用 console.log(module) 就可以看到所有的属性
commonJs、AMD、UMD、es6 到底是怎么用的
文章图片

amd
因为 commonjs 规范加载依赖资源是同步加载的,加载过程中是一直卡住的,所以 amd 是这样的写一堆需要加载的内容,然后将要执行的代码放在加载完成之后,require.js 就是 amd 规范的实践。使用方式是这样的

// data-main属性的作用是,指定网页程序的主模块。在上例中,就是js目录下面的index.js,这个文件会第一个被require.js加载。由于require.js默认的文件后缀名是js,所以可以把index

【commonJs、AMD、UMD、es6 到底是怎么用的】amd 规范的 lib 库该如何写呢
// moduleA.js define(function (){ var add = function (x,y){ return x+y; }; return { add: add }; });

是的,引入 require.js 之后会提供全局的 define 方法,所以 lib 库只需要直接使用 define 方法就好了。使用的时候是这样的
// index.js require(['moduleA'], function (moduleA){ console.log(moduleA) //moduleA就是moduleA.js模块传入的函数执行后返回的对象{add:function}  });

umd
umd
唉,?,午觉没睡醒就叫起来开会。累了,不想写了

    推荐阅读