Node.js轻松入门之模块机制(CommonJS)

开始Node.js入门前,我想先从Node.js的模块让你们开始了解Node。
都知道Node.js是基于Javascript运行时建立的一个平台。而Javascript先天就缺乏一项功能:模块。
在Node出现之前,服务器端Javascript基本没有市场,和前端Javascript比起来,Rhino等后端Javascript运行环境基本只是用于小工具,但是经历了漫长的发展,终于Javascript也制定了相应的规范。其中CommonJS规范算是最重要的。

CommonJS规范

CommonJS规范为Javascript指定了一个美好的愿景——希望Javascript能够在任何地方运行。
在实际应用中,Javascript的表现能力取决于宿主环境中的API支持程度。但是,Web在发展,浏览器中出现了更多的标准API,这些过程发生在前端,后端Javascript的规范却远远落后。对于Javascript自身而言,它的规范依然是最薄弱的,还有以下缺陷:
1.没有模块系统。
2.标准库较少:ECMAScript仅定义了部分核心库,对于文件系统,I/O流等常见需求却没有标准的API。就HTML5的发展状况而言,W3C标准化在一定定义上是在推进这个过程,但是它仅限于浏览器端。
3.没有标准接口:在Javascript中,几乎没有定义过像Web服务器或者数据库之类的标准统一接口。
4.缺乏包管理系统:这导致Javascript应用中基本没有自动加载和安装依赖的能力。
CommonJS规范的提出,主要是为了弥补当前Javascript没有标准的缺陷,以达到像Python、Ruby和Java具备开发大型应用的的基础能力,而不是停留在小脚本程序的阶段。他们期望那些用CommonJS API写出的应用可以具备跨宿主环境执行的能力,这样不仅可以利用Javascript开发富客户端应用,而且还可以编写以下应用。
1.服务器端Javascript应用程序。
2.命令行工具。
3.桌面图形界面应用程序。
4.混合应用(Titanium和Adobe AIR等形式的应用)。

CommonJS的模块规范

CommonJS对模块的定义十分简单,主要分为模块引用、模块定义和模块标识3个部分。

一:模块引用

模块引用的示例代码如下:
var math = require('math');
复制代码
在CommonJS规范中,存在require()方法,这个方法接受模块标识,以此引入一个模块的API到当前上下文中。

模块定义

在模块中,上下文提供require()方法来引入外部模块。对应引入的功能,上下文提供了exports对象用于导出当前模块的方法或者变量,并且他是唯一导出的出口。在模块中,还存在一个module对象,它代表模块自身,而exports是module的属性。在Node中,一个文件就是一个模块,将方法挂载在exports对象上作为属性即可定义导出的方式:


在另一个文件,我们通过require()方法引入模块后,就能调用定义的属性或方法了:

模块标识

模块标识其实就是传递给require()方法的参数,他必须是符合小驼峰命名的字符串,或者以.、..开头的相对路径,或者绝对路径。它可以没有文件名后缀.js。
模块的定义十分简单,接口也十分简洁。它的意义在于将类聚的方法和变量等限定在私有的作用域中,同时支持引入和导出功能以顺畅的连接上下游依赖。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值