2011-09-26 3 views
7

NodeJS에 멀티 플레이어 보드 게임 서버를 작성하고 있으며 게임, 사용자, 게시판 등 여러 가지 개체가 있습니다. 현재이 개체는 모두 NodeJS에 의해 실행되는 단일 'sever.js'파일.NodeJS - 여러 파일에 걸쳐 있지만 동일한 네임 스페이스로 분할 된 여러 객체

내 프로젝트가 커짐에 따라이 단일 파일이 점점 더 혼잡 해지고 탐색하기가 어려워졌습니다.

내가 원하는 것은 이러한 개체를 여러 개의 js 파일로 분할하는 것입니다. 그러나 모든 곳에서 require 함수를 사용할 필요가 없습니다.

나는 다음과 같은 객체를 생성 계속 하시겠습니까 -

game = new Game(); 

그리고하지이 -

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

-

편집 : 올바른 NodeJS 방법은 무엇

일하는 것?

답변

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 파일을 필요로하는 멋진 로더를 만들 수 있지만, 실제로는 가치 있다고 생각하지 않습니다.

+0

은 고려 모범 사례 등의 상단에이를 포함되어 있습니까? NodeJS가 권장하는 방법은 무엇입니까? – NoPyGod

+3

+1. 이것은 (상단에 필요함) 노드 응용 프로그램과 라이브러리에서 일반적으로 사용됩니다. –

1

당신은 처음에로드 할 수 있습니다 :

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

그러나, 나는 개인적으로하지 않을 것입니다. 왜 내가 그 아이디어를 좋아하지 않는지 정확히 말할 수는 없지만 그렇게하지는 않는다.

+1

개체를 인스턴스화하는 것과 같은 간단한 작업을 수행하기 위해 장소 전체에서 요구 사항을 사용하는 것에 만족하십니까?나는 "옳은 길"을하고 싶지만 올바른 길은 무엇인지 잘 모릅니다. – NoPyGod

+0

나는 당신의 요지를 보지만, 나는 모든 것을 하나의 파일에 보관하기 때문에 실제로는이 문제가 없었습니다. Node에 몇 가지 사항을 적어 놓았지만 예외없이 매우 작은 프로젝트가 있었고 편집기에서 코드의 북마크만으로도 충분했습니다. 그러나 매우 많은 양의 코드를 다루는 경우 지루할 수 있습니다. /불가능한. – DaveRandom

+0

정말 친절합니다. – AJB

4

전역을 사용할 수 있습니다. Game.js에서 :의 user.js에

global.Game = function(){}; 

:

main.js에서
global.User = function(){}; 

:

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

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

이것은 내가 가장 좋아하는 방법입니다. C++ 헤더 파일을 포함하는 것과 유사하지만 비슷한 이름의 모듈을 사용하는 경우 전역 범위를 오염시킵니다. – Vortico

관련 문제