《Node应用程序构建——使用MongoDB和Backbone》一2.5 模块与CommonJS-阿里云开发者社区

开发者社区> 开发与运维> 正文

《Node应用程序构建——使用MongoDB和Backbone》一2.5 模块与CommonJS

简介:

本节书摘来自异步社区《Node应用程序构建——使用MongoDB和Backbone》一书中的第2章,第2.5节,作者【美】Mike Wilson,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.5 模块与CommonJS

Node应用程序构建——使用MongoDB和Backbone
Node引发了服务器端JavaScript编程的巨大兴趣,更别提对一般JavaScript的影响了。但这不是JavaScript第一次脱离浏览器作为工具,实际上,JavaScript在网景公司的浏览器中首次亮相之后不久,该公司发布的一个Web服务器就包含了该语言。不到一年后,微软的因特网信息服务(IIS)服务器软件也开始支持服务器端JavaScript(他们的方言称为JScript)。大约在同一时间,网景打算使用Java编程语言重写他们的旗舰Web浏览器,该项目最终产生了Mozilla的Rhino JavaScript引擎。

如果这听起来像是一个快速碎片化的市场,请想象一下试图为一个现有服务器产品编写JavaScript代码,然后在其他地方重用同样的代码。如果你的应用足够小,你或许可以通过一些修改对付过去。任何正常大小的应用程序很快会发现,这时需要调用外部库和模块化组件,否则最后将得到一个乱成一团、无法维护的几千行脚本代码的大文件。每个服务器都有不同的方法来划分应用代码,但没有统一标准。一旦选用了一种,你就被套牢了。

情况并没有好多少,虽然今天在代码开发标准化、命名空间保护、对象创建和模块化方面已经取得了重大进步。CommonJS旨在为脱离浏览器的JavaScript提供一套标准规范,其中许多已经被Node采用。如果你刚开始使用Node,而你的应用程序已经大到不合适放在一个文件中,那么你必须知道,你的应用无法使用外部文件中声明的变量,除非显式地使用exports关键字使它们可见。

例2-9展示了一个简单的Node.js模块,它暴露出一个函数:getFlagWidth,用于计算美国国旗的法定宽度,宽度必须1.9倍于国旗的高度;这个比例存储在名为FLAG_WIDTH的变量中。函数getFlagWidth获取高度值并乘以宽高比例,为给定的国旗高度产生对应的宽度。

例2-9 计算国旗宽度的模块


f561db32534f9c24cc7ced11fc74e9cc2112221b

如果你在应用中包含这个文件,你将能够访问getFlagWidth函数,它使用exports关键字暴露接口,而不是FLAG_WIDTH变量。FLAG_WIDTH可以认为是一个“私有”变量,只能在该模块的上下文中访问,而不能在整个应用范围内访问。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章