Ich arbeite an einem Projekt, das AngularJS und Socket.io verwendet. Ich fand this sehr schönes Beispiel für die Integration.Wie wird das Node/Angular/Socket.io-Projekt strukturiert?
Dies ist die Projektstruktur:
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
in 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'));
Jetzt, während normalerweise würde ich in app.js
die Serverlogik setzt nur scheint es, dass hier die Logik geteilt zwischen api.js
, socket.js
und index.js
- Ich mag das sehr.
aber lassen Sie uns sagen, dass in socket.js
Ich brauche in api.js
definiert etwas zu verwenden .. sollte ich eine var api = require('./api');
in socket.js
hinzufügen?
Haben Sie den Generator-eckigen für Yeoman betrachtet? Dies wird dir helfen, deine App zu strukturieren. –
Ja, die Client-Seite ist kein Problem. eckig ist ziemlich cool :) Problem war die Server-Seite .. Ich endete beim Erstellen von Modulen/Objekten, Importieren von allem in die 'app.js' und übergeben sie durch Verweis zueinander (wenn nötig) .. :) – fusio