Nodejs 的模块,nodejs中每一个js文件都是独立的,不用担心他们中的变量会相互覆盖

 模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个
Node.js 文件就是一个模块,这个文件可能是 JavaScript 代码、 JSON 或者编译过的 C/C++ 扩展。

 

1.获取模块

Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口, require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。
eg:

  //module.js
var name;
exports.setName = function(thyName) {
  name = thyName;
};
exports.sayHello = function() {
  console.log('Hello ' + name);
};
//getmodule.js
var myModule = require('./module');
myModule.setName('BYVoid');
myModule.sayHello();


使用 module.exports = Hello 代替了 exports.Hello=Hello。在外部引用该模块时,其接口对象就是要输出的 Hello 对象本身,而不是原先的exports。

不可以通过对 exports 直接赋值代替对 module.exports 赋值。exports 实际上只是一个和 module.exports 指向同一个对象的变量,它本身会在模块执行结束后释放,但 module 不会,因此只能通过指定module.exports 来改变访问接口




2.全局对象与全局变量

global 最根本的作用是作为全局变量的宿主

2.1 process

process 是一个全局变量,即 global 对象的属性。它用于描述当前 Node.js 进程状态的对象,提供了一个与操作系统的简单接口。

process.nextTick(callback)的功能是为事件循环设置一项任务, Node.js 会在下次事件循环调响应时调用 callback。

 eg;

function doSomething(args, callback) {
  somethingComplicated(args);
  process.nextTick(callback);
}
doSomething(function onEnd() {
  compute();
});

不要使用 setTimeout(fn,0)代替 process.nextTick(callback),前者比后者效率要低得多。

posted on 2016-08-07 22:56  坚持不懈❥  阅读(431)  评论(0编辑  收藏  举报