2013-07-05 72 views
6

我正在使用AngularJS和Socket.io的項目。我發現this非常好的整合例子。如何構建Node/Angular/Socket.io項目?

這是項目結構:

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 
在app.js

:現在

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看來,這裏的邏輯劃分在api.js,socket.jsindex.js之間 - 我非常喜歡這個。

但是,讓我們說,在socket.js我需要使用api.js定義的東西..我要補充的socket.js一個var api = require('./api');

+2

你看過Yeoman的generator-angular了嗎?這將幫助您構建您的應用程序。 –

+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); 

不知道這是否是擁有最好的辦法代碼中的某種分離..我習慣了Java,並且它在JS中通常是一個大的源文件。

+1

其實,一個大的源文件只是一種做事方式。與Java不同,您可以(幾乎總是)按照您的需要做任何事情,並按照您的需求組織事情。當然,各地都有最佳做法和種子,但這取決於你。我認爲有人低估了你的回答,因爲你沒有提供有關你所做的事情的信息。也許這些模塊正確導入並通過引用傳遞,也許沒有。也許更好的解釋或更多的代碼會有所幫助。 –