2015-02-02 7 views
0

그래서 노드가 혼란 스럽기 때문에 node.js 서버의 일부 파일을 방해하고 싶습니다. 내가 어떻게 그걸 성취 할 수 있을지 생각해?이 파일을 node.js의 여러 파일로 분할하는 방법

나는 하나 개의 파일이 같은 것들에 이상적으로 이런 일이 (파일의 내용이 바로 마법의 문을 필요로 일종의함으로써 파일의 상단, 또는 무엇이든에 추가 할 수있는 곳) 일 것이다

를 포함 할

settings.js는

파일
/* Defines a bunch of global variables and settings */ 
/* I understand global isa bad practice but I want this clutter out of the main server file */ 


express = require("express"); // Express JS 
logfmt = require("logfmt"); // Heroku key-value logger 
mongoose = require('mongoose'); // DB simplifier 
passport = require('passport'); // Authentication 
flash = require('connect-flash'); // Flash Messages 
port = Number(process.env.PORT || 5000); // Locally uses port 5000, else uses port of server 
configDB  = require('./config/database.js'); 
cookieParser = require('cookie-parser'); 
bodyParser = require('body-parser'); 
session  = require('express-session'); 

app = express(); //Express for server 

홈페이지 서버 파일

/**************************** ********************* ** SERVER ********** ****************************************/

var settings = require("./settings"); 

/* GLOBAL VARIABLE FOR THE SERVER. MAYBE BAD PRACTICE IDK YOLO */ 
server  = require('http').createServer(app); 
util   = require("util"); 
io = require("socket.io").listen(server); 
_settings = new settings(); 
//socket; // Socket controller idk tbh 
/* END GLOBAL VARIABLES */ 
.... 
+0

당신은 배워야한다 변수 선언 앞에서'var'을 사용하여 우연한 전역 변수를 선언하지 않도록하십시오. Javascript에서는 나쁜 행위로 간주됩니다. 왜냐하면'var'로 선언 된 일반 모듈 변수를 사용하면 전체 nodejs 모듈 시스템이 방지하도록 설계된 변수 이름간에 충돌이 발생할 수 있기 때문입니다. – jfriend00

답변

-1

내가 가지고 그것!

은/*는 */

settings.js

module.exports 

= { 
    load : function() { 
      express = require("express"); // Express JS 
      logfmt = require("logfmt"); // Heroku key-value logger 
      mongoose = require('mongoose'); // DB simplifier 
      passport = require('passport'); // Authentication 
      flash = require('connect-flash'); // Flash Messages 
      port = Number(process.env.PORT || 5000); // Locally uses port 5000, else uses port of server 
      configDB  = require('./config/database.js'); 
      cookieParser = require('cookie-parser'); 
      bodyParser = require('body-parser'); 
      session  = require('express-session'); 

      app = express(); //Express for server 
     } 
}; 

server.js

전역 변수와 설정의 무리를 정의
var settings = require("./settings"); 
settings.load(); 

// : D

+0

은 포트 5000을 제외하고 설정이 아닙니다. 그 외에 뭐라고 부를 수 있니? – Paul

+0

prep_server.js? config.js? app.js? 어떻게 생각해? – bezzoon

+3

모든 모듈 변수에 전역 변수를 사용하는 것은 바람직하지 않습니다. 이로 인해 모듈간에 충돌/충돌이 발생할 수 있습니다. 나는이 방법을 전혀 추천하지 않는다. '.load()'에서 객체를 반환하고 그 객체의 모든 모듈 변수를 얻을 수는 있지만 원래의 방법이 더 쉽다는 것을 알게 될 것입니다. – jfriend00

관련 문제