2013-07-05 3 views
6

저는 AngularJS와 Socket.io를 사용하는 프로젝트를 진행하고 있습니다. 나는 this 통합의 아주 좋은 예를 발견했다. 일반적으로 그냥 app.js에서 서버 로직을 둘 것입니다 동안은 논리 분할 여기에 보인다,Node/Angular/Socket.io 프로젝트를 구성하는 방법은 무엇입니까?

var express = require('express'), 
    routes = require('./routes'), 
    api = require('./routes/api'), 
    socket = require('./routes/socket'); 

... 

// serve index and view partials 
app.get('/', routes.index); 
app.get('/partials/:name', routes.partials); 

// JSON API 
app.get('/api/name', api.name); 

// redirect all others to the index (HTML5 history) 
app.get('*', routes.index); 

// Socket.io Communication 
io.sockets.on('connection', require('./routes/socket')); 

지금 : app.js에

app.js     --> app config 
bower.json    --> for bower 
package.json   --> for npm 
public/     --> all of the files to be used in on the client side 
    css/     --> css files 
    app.css    --> default stylesheet 
    img/     --> image files 
    js/     --> javascript files 
    app.js    --> declare top-level app module 
    controllers.js  --> application controllers 
    directives.js  --> custom angular directives 
    filters.js   --> custom angular filters 
    services.js   --> custom angular services 
    bower_components/ 
    angular/   --> angular.js 
    angular-socket-io/ --> socket.io adapter for angular 
routes/ 
    index.js    --> route for serving HTML pages and partials 
    socket.js    --> serve content over a socket 
    api.js    --> serve JSON to our AngularJS client 
views/ 
    index.jade   --> main page for app 
    layout.jade   --> doctype, title, head boilerplate 
    partials/    --> angular view partials (partial jade templates) 
    partial1.jade 
    partial2.jade 

:

은 프로젝트 구조 api.js, socket.jsindex.js 사이 - 이것은 아주 좋습니다.

그러나, 나는 socket.js에서 var api = require('./api');을 추가해야합니다 ..이 전 api.js에 정의 된 것을 사용할 필요가 socket.js에서 그런 말을하자?

+2

Yeoman의 발전기 각도를 보았다. 이렇게하면 앱을 구성하는 데 도움이됩니다. –

+1

예, 클라이언트 측은 문제가 없습니다. 각도가 아주 멋지다. :) 문제는 서버 쪽이었다. 나는 모듈/객체를 생성하고, 모든 것을'app.js'로 가져와 서로 참조 (필요할 때)하여 전달했다. :) – fusio

답변

-1

나는 app.js에 모든 것을 가져 오기 및 (필요한 경우) 서로 참조를 전달 모듈/객체를 생성 결국 ..

var mashup = require('./routes/mashupModule'), 
    socket = require('./routes/socketModule'), 
    browser = require('./routes/browserModule'); 

    socket.init(server, browser, mashup); 
    browser.init(socket, mashup); 

이 가질 수있는 가장 좋은 방법인지 확실하지 코드에서 어떤 종류의 분리. 나는 자바에 익숙해있다. 그리고 그것은 JS에서 일반적으로 하나의 큰 소스 파일이다. #

+1

실제로 하나의 큰 소스 파일은 일을하는 한 가지 방법 일뿐입니다. 자바와 달리, 당신은 (거의 항상) 당신이 원하는 것을하고 당신의 필요에 맞는 방식으로 물건을 구성 할 수 있습니다. 물론 모범 사례와 종자가 주변에 있지만 모두에게 달려 있습니다. 나는 네가 한 일에 대한 정보를 거의 제공하지 않았기 때문에 누군가가 대답을 내려 준다고 생각한다. 어쩌면 그 모듈들이 제대로 수입되고 참조에 의해 전달되고있는 것일 수도 있습니다. 어쩌면 더 나은 설명이나 더 많은 코드가 도움이 될 것입니다. –

관련 문제