2011-09-26 38 views
7

Ben NodeJS bir çok oyunculu masa oyunu sunucusunu yazıyorum bölünmüş ve ben Halen bu nesnelerin hepsi bir ikamet vb Oyun, Kullanıcı, Yönetim Kurulu gibi birkaç farklı nesneleri NodeJS tarafından yürütülen tek 'sever.js' dosyası. NodeJS - birden fazla nesne birden fazla dosya üzerinde aynı ad

benim projem büyüdükçe

, bu tek dosya giderek kalabalık ve gezinmek için zor hale gelmektedir. Ben istiyorum ne

ama her yerde gerektiren fonksiyonunu kullanmak zorunda kalmadan birden js dosyalarının içine bu nesneleri bölmektir.

böyle nesneleri oluşturmaya devam etmek isteyen -

game = new Game(); 

Ve bu -

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

-

Düzenleme: Doğru NodeJS yolu nedir

şeyler mi yapıyorsun

cevap

7

Eh, yapabileceğiniz birkaç küçük şeyler vardır. Başka bir dosyaya sınıf tanımladığınızda

Birincisi, daha sonra yerine, yani doğrudan module.exports tanımlamak

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

(gerekli edilecek) Ve:

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

Sen yapabilirsiniz:

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

Ya da tercih ettiğim şey, üstteki tüm gereksinimleri tanımlamaktır:

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

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

doğrudan erişir ve otomatik olarak tüm JS dosyalarına gerektiren bazı fantezi yükleyici oluşturabilir, ama gerçekten buna değer olduğunu sanmıyorum.

+0

göz önüne en iyi uygulama gibi üst onları dahil mi? NodeJS'nin bir şeyler yapmasının önerilen yolu nedir? – NoPyGod

+3

+ 1. Bu (üstünde gerektiren) Düğüm uygulamalar ve kütüphanelerde yaygın bir uygulamadır. –

1

Sen başında onları yükleyebilirsiniz:

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

Ancak, ben şahsen olmaz. Ben fikri sevmedim, ama yok neden tam diyemeyiz.

+1

Kullanarak kullanmak, bir nesnenin gerçekleştirilmesi gibi basit bir görev yapmak için her yerde gereksiniminiz var mı?Ben bir şeyi "doğru yol" yapmak istiyorum, ama doğru yolun ne olduğundan emin değilim. – NoPyGod

+0

Sizin noktanızı görüyorum, ama aslında hiçbir zaman bu sorunu yaşamadım çünkü her şeyi tek bir dosyada saklıyorum. Düğümde birkaç şey yazarken, istisnasız olarak oldukça küçük projeler olmuşlardı ve editörde sadece kod parçalarına yer işareti koymuşlardı, fakat çok büyük miktarda kodla uğraşırsanız bunun can sıkıcı olabileceğini görebiliyorum./imkansız. – DaveRandom

+0

Gerçekten öyle. – AJB

4

Sen küresel kullanabilirsiniz. Game.js içinde : user.js içinde

global.Game = function(){}; 

:

main.js içinde
global.User = function(){}; 

:

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

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

Bu benim favori yöntemim. C++ başlık dosyalarını dahil etmek benzer, ancak benzer isimleri olan modülleri kullanıyorsanız, küresel kapsamınızı kirletecektir. – Vortico

İlgili konular