一行读nodejs(三)-模块(Modules)

一起读nodejs(三)----模块(Modules)本文是对nodejs0.8.8版本的api开发手册解读.nodejs网址模块(Modules)st

一起读nodejs(三)----模块(Modules)

    本文是对nodejs0.8.8版本的api开发手册解读.nodejs网址

    模块(Modules) 

    stability:5 -locked

    node有一个简单的模块加载机制.在node里面文件和模块是 一对一 对应的.例如,foo.js加载在同一文件夹下的circle.js模块.

    foo.js的内容:

/usr/lib/node/foo/1.2.3/ - Contents of the foo package, version 1.2.3./usr/lib/node/bar/4.3.2/ - Contents of the bar package that foo depends on./usr/lib/node/foo/1.2.3/node_modules/bar - Symbolic link to /usr/lib/node/bar/4.3.2/./usr/lib/node/bar/4.3.2/node_modules/* - Symbolic links to the packages that bar depends on.

    因此,即使发生环形加载,或者依赖冲突,每个模块都能够获得一个他们能够使用的版本.    挡在foo包中执行require('bar'),将会通过解析出来的路径连接字符/user/lib/node/foo/1.2.3/node_modules/bar获得指定版本的bar.然后,当bar包中执行require('quux')时,将会通过解析出来的路径连接字符/user/lib/node/bar/4.3.2/node_modules/quux获得指定版本的quux.    此外,为了让模块的查找过程更理想,不要直接把包放在/usr/lib/node下,我们可以把他们放在/usr/lib/node_modules/<name>/<version>下.这样node就可以不用麻烦的在/usr/node_modules/或者/node_modules下查找找不到的包.    为了确保模块在repl中是可见的,将/usr/lib/node_modules添加到$NODE_PATH环境变量中可能会起到效果.因为模块查到用到的其他模块全部是相对的,并且require()的加载也是基于真实路径的,所以,包可以放在任何地方.