How to structure a Node / Angular / Socket.io project?

I am working on a project that uses AngularJS and Socket.io. I found this great integration example.

This is the project structure:

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

Now, although I usually just put the server logic in app.js , it seems that here the logic is divided between api.js , socket.js and index.js - I really like it.

However, let's say that in socket.js I need to use something specific in api.js .. add var api = require('./api'); in socket.js ?

+6
source share
1 answer

I finished creating modules / objects, imported everything into app.js and passed them by reference to each other (if necessary).

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

Not sure if this is the best way to have any kind of separation in the code. I'm used to Java, and it sucks that in JS this is usually one large source file.

-1
source

Source: https://habr.com/ru/post/948796/


All Articles