深入浅出Node.js
上QQ阅读APP看书,第一时间看更新

第2章 模块机制

首先,我想从模块为你娓娓道来Node。

JavaScript自诞生以来,曾经没有人拿它当做一门真正的编程语言,认为它不过是一种网页小脚本而已,在Web 1.0时代,这种脚本语言在网络中主要有两个作用广为流传,一个是表单校验,另一个是网页特效。另一方面,由于仓促地被创造出来,所以它自身的各种陷阱和缺点也被各种编程人员广为诟病。直到Web 2.0时代,前端工程师利用它大大提升了网页上的用户体验。在这个过程中,B/S应用展现出比C/S应用优越的地方。至此,JavaScript才被广泛重视起来。

在Web 2.0流行的过程中,各种前端库和框架被开发出来,它们最初用于兼容各个版本的浏览器,随后随着更多的用户需求在前端被实现,JavaScript也从表单校验跃迁到应用开发的级别上。在这个过程中,它大致经历了工具类库、组件库、前端框架、前端应用的变迁,如图2-1所示。

图2-1 JavaScript的变迁

经历了长长的后天努力过程,JavaScript不断被类聚和抽象,以更好地组织业务逻辑。从另一个角度而言,它也道出了JavaScript先天就缺乏的一项功能:模块。

在其他高级语言中,Java有类文件,Python有import机制,Ruby有require, PHP有include和require。而JavaScript通过<script>标签引入代码的方式显得杂乱无章,语言自身毫无组织和约束能力。人们不得不用命名空间等方式人为地约束代码,以求达到安全和易用的目的。

但是看起来凌乱的JavaScript编程现状并不代表着社区没有进步,JavaScript的本地化编程之路一直在探索中。在Node出现之前,服务器端JavaScript基本没有市场,与欣欣向荣的前端JavaScript应用相比,Rhino等后端JavaScript运行环境基本只是用于小工具,但是经历十多年的发展后,社区也为JavaScript制定了相应的规范,其中CommonJS规范的提出算是最为重要的里程碑。