CommonJS 与 Node.js 的关系?

越前君
  • 17

先有 CommonJS 还是 Node.js ?

是 Node.js 成就了 CommonJS ?

CommonJS 规范是 Node.js 作者创建的吗?

为什么大家谈到 CommonJS 就会涉及 Node.js,只是因为 Node.js 目前应用广泛?

虽然知道 CommonJS 规范的使用,但对于二者的关系不是很了解,一直很纳闷,去网上搜索过,基本上都在讲规范的东西,有点答非所问的意思,没找到我想要的答案。

跪求一个清晰的解释,谢谢。

评论
阅读 980
4 个回答

1、先有 CommonJS。

2、可以这么说,毕竟两者时代很接近,也无法证实假如没有 Node.js,CommonJS 还能不能广泛流行。

3、不是,两个作者认识,但并没有一起共事过。

4、也不能说只是吧。毕竟现存的模块化解决方案就那么几个:ES Module、AMD、CMD、CommonJS,以及大杂烩 UMD,你也绕不过去它啊。

5、下面细讲。


细节讲述请参考:《编程时间简史系列》JavaScript 模块化的历史进程

commonJS是node的模块化规范,由于node出来的时候ES的标准模块规范还没有出来,node又需要使用模块化开发来规范代码模块。
你的疑问
1. 先有 CommonJS 还是 Node.js ?
先有的规范,node.js 借鉴规范实现了自己的模块化系统
2.CommonJS 规范是 Node.js 作者创建的吗?
不是,node.js 是借鉴了这一规范
最新版的node.js已经推荐采用标准的EM模块规范了,大家谈到 CommonJS 就会涉及 Node.js是因为初期几乎大部分的node模块都是基于CommonJS 规范的

就各位的回答,总结一下:

  1. CommonJS 是一种规范,Node.js 只是 CommonJS 的其中一个实现,仅此而已。(自然是先有规范,再有实现啦)
  2. Node.js 被广泛使用,让更多地人知道了 CommonJS 规范。所以说 Node.js 成就了 CommonJS ,应该没毛病。
  3. 为什么需要 CommonJS?
我们都知道,在ES6之前,原生 JavaScript 并没有内置的模块系统。JavaScript 诞生之初只是作为一个脚本语言来做一些很简单的表单校验等工作。但前端的发展,尤其是 Ajax 诞生以后,JavaScript 能做的事情越来越多,自然业务会变得越来越复杂。如果再像以前那样使用一个一个的 <script> 标签引入 JavaScript 代码,会造成越来越难维护,全局变量污染等一系列的问题。所以我们需要模块化来解决这些乱七八糟的东西。

每个文件就是一个模块,有自己的作用域,在该文件定义的变量、函数等都是私有的,对其他文件不可见,我们只管对外输出所需要的接口即可。

如果有不妥,欢迎指出。

撰写回答

登录后参与交流、获取后续更新提醒

宣传栏