Здравствуйте.
У меня проблемы с пониманием правильного подключения модулей и распределение кода по файлам.
Работаю в WebStorm и пока у меня есть простенький http сервер с использованием express и socket.io.
Судя по той информации что мне самому удалось найти в интернете - должен быть основной запускаемый скрипт, в папке routes должны быть js скрипты по одному на каждую страницу которая будет отображаться в браузере, в папке views должны быть шаблоны так же по одному на каждую страницу и в папке public должны быть те вещи которые предназначены для клиента вроде css стилей и клиентских js скриптов.
Мой основной скрипт выглядит так:
var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app);
var path = require('path');
var debug = require('debug')('skinsgrow:server');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var steam = require('steam-login');
var io = require('socket.io').listen(server);
server.listen(3000);
server.on('error', onError);
server.on('listening', onListening);
var index = require('./routes/index');
var roulette = require('./routes/roulette');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(require('express-session')({ 'resave': false, 'saveUninitialized': false, 'secret': 'a secret' }));
app.use(steam.middleware({
realm: 'http://localhost:3000/',
verify: 'http://localhost:3000/verify',
apiKey: '*****************************'
}));
app.use('/', index);
app.use('/roulette', roulette);
app.use('/auth', steam.authenticate(), function (req, res) {
res.redirect('/roulette');
});
app.use('/verify', steam.verify(), function (req, res) {
res.redirect('/roulette');
});
app.use('/logout', steam.enforceLogin(), function(req, res){
res.redirect('/');
});
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(new Error(404, 'Not Found'));
});
// error handler
app.use(function(err, req, res, next) {
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
res.status(err.status || 500);
res.render('error');
});
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
module.exports = app;
Предположим мне понадобилось использовать к примеру socket.io пакет который определен в главном скрипте app.js из одного из дополнительных js файлов из папки routes.
Разве не будет считаться плохим тоном подключать главный (запускаемый) скрипт во все дополнительные?
Если будет, тогда как делать правильно?