Hogyan kell végrehajtani a globális alkalmazásokhoz expressz verem túlcsordulás orosz

Röviden a szerkezete, ami van. Amikor az alkalmazás elindul

igényel string ( 'socket') (szerver) - összekapcsolja a fájlt:

Most inkább az a pont, az alkalmazás vezérlők öröklő a bázis:

És mondjuk van szükség belül methodForPage (), hogy küldjön egy üzenetet, mint ez:

De aljzat változó csak belső io.on (kapcsolat). Hogy elérhetővé teszik a vezérlő? Vagy hogyan lehet meghatározni azt talpon belül az adatkezelő, hogy úgy érhető el minden vezérlők?

És van egy másik pont, például szükség van a vezérlőn belül meghatározott socket'a esemény, mint ez:

És ugyanakkor szeretnénk használni a tulajdonságait a vezérlő elvégzésére, például levelet kapott adatokat a konnektorból, hogy az adatbázisba.

Lehetséges, hogy hajtsák végre az összes fenti, oly módon, és ha igen, mire lesz szükség, hogy? Ez lenne a helyes megközelítés?

megállapított december 22 '15 at 09:55

Sok lehetőség van. Szeretem építészet formájában egy fa, ahol van valami, mint egy isten tárgy, amelyből minden rendelkezésre álló modulok, amely egyfajta diszpécser köztük és az egyetlen hozzáférési pont minden része prilozheniya.Obychno Megvan sem rejlik a globális, vagy továbbított valamennyi tervező / modulokat. De nem az a tény, hogy ez a legjobb megoldás minden esetben meg kell nézni külön-külön. Remélhetőleg, akkor írjon egy teljes válasz erre a témára. - Darth december 22 '15 at 10:55

Akkor szembesülnek egy tipikus OOP szemlélet egy probléma: hol a függőség?

Számos megoldást a problémára. A legnyilvánvalóbb a globális változók használata. de ez a lehetőség csak alkalmas nagyon kis projektek, vagy projektek, amelyek nem kell tartani. Miért káros globális változók írtak igen nagyszámú különböző cikkeket. Minden probléma származik egy nagyon egyszerű tényt: a kód túl erősen kötődik (szoros csatolás). Ennek következtében ez azt eredményezi, hogy nem lehet újra használni kódjával, egység tesztelése problémák, nehézségek hibakeresés alkalmazások és így tovább. A közepes és nagy projektek, mindez vezet idővel egy ilyen rendetlenség, hogy könnyebbé válik átírni mindent a semmiből.

Ezt a megközelítést követve, akkor a következőket kell tennie:

Socket.io visszatér egy példányát a függvény exportált socket.js file:

Állapítsa egy példány socket.io explicit függését alap vezérlő (vagy bizonyos közvetítés útvonalak):

Segítségével socket.io például gyermek vezérlők (valós vagy útvonalak):

Az, hogy a projekt függően főfájl explicit formában (használhatja a DI konténer, de úgy tűnik, egy kicsit túlzott nekem):

Köszönöm a nagyon hasznos és részletes választ! Én még nem próbáltam tanácsot a gyakorlatban, de néztem a kódot, van egy kérdés jelenik meg, arra utal, 4. bekezdés Itt azt írja, hogy a kezdete a projekt fájl azt értjük, gyermek vezérlő és add meg a bekapcsolási egy példány socket.io de az tény, hogy az én projekt vezérlők mindig inicializált Roth: router.get ( „/ foobar” funkció (req, res) ); - sanu0074 december 23 '15 at 16:04

És én nem egészen értem, hogyan fog működni, és miért van szükség inicializálni a vezérlő leányvállalatok elsősorban projekt fájl (ezek is nagyon), és hogyan lehet őket, majd req és res? Lehet, hogy tévedek, hogy tegyen meg mindent, és a szerkezet a projekt elkészült, nagyon szeretnék, hogy küldje el nekem a helyes útra! - sanu0074 december 23 '15 at 16:04