Wednesday 28 June 2017

Is this an insane way to manage dependencies or not?

So I am building a server which has many different modular parts, and it acts as a websocket server, an express server and other things. I have each part of the server in its own module that exports a constructor function likemodule.exports = function(){ }; and then in my main server.js file, I create instances of them like sovar PartOfServer = new Part(); and then certain parts of the server depended on different things so instead of figuring out which part needed which things, and creating the constructor function signature to match, I just did this:var express = require("express"); var app = express(); var config = require("./config"); var server = require("http").Server(app); var io = require("socket.io")(server); var socketServer = require("./app/sockets/socketserver"); var httpserver = require("./httpserver"); var path = require("path"); var util = require("./utility"); var bodyParser = require("body-parser"); var apiRoutes = require("./app/routes/authapi"); var basicRoutes = require("./app/routes/basicroutes"); var cors = require("cors"); var morgan = require("morgan"); var jwt = require("jsonwebtoken"); var UserModel = require("./app/models/user"); var passwordHash = require("password-hash"); var QueueModel = require("./app/models/queue"); var RoomModel = require("./app/models/room"); var mongoose = require("mongoose"); mongoose.connect(config.server.db.URI); var dependencies = { express: express, app: app, config: config, server: server, io: io, socketServer: socketServer, httpserver: httpserver, path: path, util: util, bodyParser: bodyParser, morgan: morgan, cors: cors, apiRoutes: apiRoutes, basicRoutes: basicRoutes, jwt: jwt, passwordHash: passwordHash, mongoose: mongoose }; // ======================= // configuration ========= // ======================= var User = new UserModel(dependencies); var Room = new RoomModel(dependencies); var Queue = new QueueModel(dependencies); var basic = new basicRoutes(dependencies); var auth = new apiRoutes(dependencies); ............ I feel like this might be kind of a weird way to pass around references to dependencies, but so far it has worked and it keeps each "part" cleaner. This also might be completely insane, I'm really not sure as I'm new to node.

Submitted June 29, 2017 at 03:40AM by maoxingren

No comments:

Post a Comment