node.js中模块,require
在php,C++中都有命名空间的概念,命名空间主要是用来解决引入文件存在函数,类,变量重名的问题,在node.js中,没有命名空间这么复杂的概念,在node中,有模块的概念,也就是将功能性的代码都放在一起。然后引入,在本文件中使用。这种不会出现函数名,变量重名问题,在引入的模块中,都是以导入的方式注册的。看下面的例子:
//circle.js var pi = 3.14; //计算圆的周长 exports.circle = function(r) { return 2 * pi * r; } //计算圆的面积 exports.area = function(r) { return pi * r * r; } ~
var circle = require('./circle'); console.log(circle.circle(2)); console.log(circle.area(3)); ~
1、这样上面的pi在引入的文件中是没有作用的,它只在circle.js中局部有效。然后exports.设置属性,然后可以回调函数使用这两个函数
注意:
1、如果是目录引入,默认会引入目录下面的index.js这个文件,否则要指定模块名,可以省略.js后缀。
2、使用require引入模块的时候,这个是一个io同步操作的,所以最好是在文件的开头就引入,如果在io量大的地方再引入,就会出现阻塞等一系列问题。性能下降。