NodeJS - 多个对象分布在多个文件中但位于同一名称空间中

时间:2011-09-26 21:30:50

标签: javascript node.js

我正在NodeJS中编写一个多人棋盘游戏服务器,我有几个不同的对象,如游戏,用户,棋盘等。目前,所有这些对象都驻留在由NodeJS执行的单个“sever.js”文件中。

随着我的项目的发展,这个单一文件变得越来越拥挤,难以导航。

我想要的是将这些对象拆分成多个js文件,但不必在整个地方使用require函数。

我希望继续创建这样的对象 -

game = new Game();

而不是这个 -

game = new (require('game')).Game()

-

编辑:

NodeJS的正确做法是什么?

3 个答案:

答案 0 :(得分:7)

嗯,你可以做一些小事。

首先,当您在另一个文件中定义您的类时(需要),您可以直接定义module.exports,即

module.exports = function Game() {...};

然后,而不是:

game = new (require('game')).Game()

你可以这样做:

game = new (require('game'));

或者,我更喜欢的是在顶部定义所有要求:

var Game = require('game'),
    User = require('user');

// Use them:
new Game();
new User();

你可以创建一些花哨的加载器,直接遍历并自动需要所有的JS文件,但我真的不认为这是值得的。

答案 1 :(得分:4)

您可以使用全局。 在Game.js中:

global.Game = function(){};

在User.js中:

global.User = function(){};
在main.js中

require('Game.js');
require('User.js');

var game = new Game();
var user = new User();

答案 2 :(得分:1)

您可以在开头加载它们:

var Game = require('game').Game;
// Do a bunch of stuff
var game = new Game();

然而,我个人不会。不能确切地说我为什么不喜欢这个主意,但我不这样做。