1.CommonJS是什么
从CommonJS本身来看,它是一个规范(官网中提到的specification),笔者发现很少有帖子对这个问题正面回答。
CommonJS在更名之前是ServerJS,它是由Mozilla的工程师Kevin Dangoor在2009年1月发起的一个项目。开始的时候称为ServerJS。它通过Google的Group发起了一些提议,并且制定了一些规范。在2009年8月的时候,这个Google Group的名字变更为了 CommonJS。如下:
1.CommonJS是什么
从CommonJS本身来看,它是一个规范(官网中提到的specification),笔者发现很少有帖子对这个问题正面回答。
CommonJS在更名之前是ServerJS,它是由Mozilla的工程师Kevin Dangoor在2009年1月发起的一个项目。开始的时候称为ServerJS。它通过Google的Group发起了一些提议,并且制定了一些规范。在2009年8月的时候,这个Google Group的名字变更为了 CommonJS。如下:
也就是说CommonJS它并不是我们平时说的CommonJS,它是一个项目,一个生态,而且是一个Google论坛的Google Group的名字。
而我们平时所讨论的CommonJS,实际上是指具体的CommonJS中明确提到的模块规范或者说是标准,也就是指:
那个这个规范的具体内容不再进一步说明了,它在官方的文档上有明确详细的说明针对Require
、Module Context
和Module Identifiers
。
2.CommonJS的宗旨
CommonJS它是针对前端走向工程化过程中的一个产物。将一个复杂的文件有针对性的拆分几个文件,拆开以后模块的内部是私有的,但是要向外暴露接口和其他的模块进行交互。
它实际上目标是致力于创建一个生态。就像python中通过pip安装依赖包以后通过import调用,java中使用import引用其他的jar包,以及c#中在visualstudio中通过添加dll的引用后使用using引入。通过构建、封装、上传、共享,打造一个以javascript为基础,可以应用于服务器端或者浏览器端,以及其他环境下的完整生态。
3.CommonJS的应用
CommonJS在Node.js中的应用,就是当前非常重要,并且被广泛应用的一种服务器端的实现。
而在浏览器端对于JavaScript的开发,由于浏览器不支持CommonJS,在浏览器中直接使用require调用的情况下,会提示require is undefined。所以需要借助browserify进行转译。
4.CommonJS带来了什么
①不用关心html中script标签引入的顺序
②不用担心window下全局变量的定义导致出现脏代码的相互影响
③针对版本的版本的管理方便明了
④针对不同业务模块的解耦可以更容易的剥离解耦
⑤解耦之后独立性增加,更有利于代码共享分享
对于 Kevin Dangoor 在2009年介绍 ServerJS 的帖子,找不到的同学请留言。