维基百科对CommonJS说明了这一点:
[CommonJS]是一个旨在为其指定生态系统的项目 浏览器外的JavaScript
据我所知,这意味着CommonJS是一个与ES正在使用的平台无关的系统。这是否意味着,当在Web浏览器的上下文中使用它时,它本质上只是另一个大型polyfill(如SystemJS),对于ES模块系统?或者它是否位于SystemJS或WebPack等模块系统下面,使得系统平台不可知?
答案 0 :(得分:1)
与SystemJS不同,CommonJS本身是specification,而不是模块加载器。它与平台无关,因为它依赖于核心ECMAScript 5语法/功能;它指定了一组要定义的字段 - module.exports
- 以及读取它们的方法 - require
- 以便更好地进行代码组织。它可能被认为是ES6模块语法的非官方前身。 AMD(异步模块定义)是一个竞争的非官方标准forked from CommonJS,由Require.js实现。
可能因为它是非官方的,浏览器不包含对CommonJS模块的任何本机支持,并且使用需要某种模块加载器实现对CommonJS的支持(如Browserify)。 Node.js实现了CommonJS规范,但在运行时甚至实现了函数wraps its module executions。
CommonJS是较早的模式之一(described as"草根努力",而不是官方ECMAScript规范添加),旨在解释JavaScript缺乏代码组织。根据{{3}}),它创建于2009年,大约在同一时间Node.js为project's website,旨在为非浏览器执行环境提供模块结构(尽管它可以轻松应用于浏览器巨型脚本和全局变量同样存在问题)。该项目是originally released的结果。
所以要回答你的标题问题,这是一个非官方的标准,当ES6模块(几乎)得到普遍支持时,这个标准将会过时。