2011-12-31 4 views
0

나는 nowjs와 함께 expressjs를 사용하고 있는데, 일부 이벤트는 액세스 할 때 경로 바로 내부의 객체에 바인딩합니다. 이것은 매우 깨끗하지는 않으며, 이벤트가 실행되는 루트에 액세스하는 모든 것을 느끼고 있습니다.Node.js 경로에서 이벤트 묶기

나는 잘 모르겠지만 다른 곳으로 옮길 수 있을지 궁금한가요?

app.get('/room/:name', function(req, res) 
{ 
    //Should this code be moved elsewhere?... how? 
    nowjs.on('connect', function() 
    { 
    this.now.room = req.params.name; 
    nowjs.getGroup(this.now.room).addUser(this.user.clientId); 
    console.log("Joined: " + this.now.name); 
    }); 

    everyone.now.distributeMessage = function(message){ 
    nowjs.getGroup(this.now.room).now.receiveMessage(this.now.name, message); 
    }; 

    res.render('room', { user : user }); 
}); 

답변

0

당신은 어쩌면 같은 앱으로 연결 MVC 같은 패턴을 적용, 다른 모듈에 밖으로 객실 코드를 분리 할 수 ​​있습니다.

var Room = require('./models/room'); 

... 

app.get('/room/:name', function(req, res) { 
    Room.initialize(params.name); 
    res.render('room', {user: user}); 
}); 

// models/room.js 

Room = { 
    initialize: function(name) { 
    nowjs.on('connect', function() { 
     this.now.room = name; 
     nowjs.getGroup(this.now.room).addUser(this.user.clientId); 
     console.log("Joined: " + this.now.name); 
    }); 

    everyone.now.distributeMessage = function(message){ 
     nowjs.getGroup(this.now.room).now.receiveMessage(this.now.name, message); 
    }; 
    } 
}; 

module.exports = Room; // makes `require('this_file')` return Room 

내가 Now.js 슈퍼 익숙하지 해요,하지만 당신은 아이디어를 얻을 -하지만 다른 파일에 다른 모듈에서 HTTP 스택을 염려하지 않는 코드를, 그것을 필요로하고 사용 필요할 땐.

+0

예, 알 수 있습니다. .on() 이벤트가 모든 페이지 액세스에서 호출되는 것에 대해 더 염려했습니다. 이것은 현재 할 것입니다. 감사. –