2013-07-05 26 views
6

Tôi đang làm việc trên một dự án sử dụng AngularJS và Socket.io. Tôi tìm thấy this ví dụ rất hay về tích hợp.Làm thế nào để cấu trúc dự án Node/Angular/Socket.io?

Đây là cấu trúc dự án:

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 

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

Bây giờ, trong khi bình thường tôi sẽ chỉ cần đặt logic máy chủ trong app.js có vẻ như đây logic được chia giữa api.js, socket.jsindex.js - Tôi khá thích điều này.

Tuy nhiên, giả sử rằng trong socket.js Tôi cần phải sử dụng thứ gì đó được xác định trong api.js .. Tôi có nên thêm var api = require('./api'); trong socket.js không?

+2

Bạn đã nhìn vào máy phát điện-góc cho Yeoman? Điều này sẽ giúp bạn cấu trúc ứng dụng của mình. –

+1

Có, phía khách hàng không có vấn đề gì. góc cạnh là khá mát mẻ :) Vấn đề là phía máy chủ .. Tôi đã kết thúc việc tạo mô-đun/đối tượng, nhập mọi thứ vào 'app.js' và chuyển chúng bằng tham chiếu với nhau (khi cần) .. :) – fusio

Trả lời

-1

tôi đã kết thúc việc tạo ra các module/đối tượng, nhập khẩu tất cả mọi thứ vào app.js và đi qua chúng bằng cách tham chiếu với nhau (khi cần thiết) ..

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

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

Không chắc chắn cho dù đây là cách tốt nhất để có một số loại tách trong mã .. Tôi đang sử dụng Java, và nó sucks rằng trong JS nó thường là một tập tin nguồn lớn ..

+1

Thực ra , một tệp nguồn lớn chỉ là một cách để làm việc. Không giống như Java, bạn có thể (hầu như luôn luôn) làm bất cứ điều gì bạn muốn và sắp xếp mọi thứ theo cách phù hợp với nhu cầu của bạn. Tất nhiên có những thực hành tốt nhất và hạt giống tất cả xung quanh, nhưng nó thuộc vào bạn. Tôi nghĩ rằng một người nào đó đã downvoted câu trả lời của bạn bởi vì bạn cung cấp ít thông tin về những gì bạn đã làm. Có lẽ các mô-đun đó được nhập chính xác và được chuyển qua tham chiếu, có thể không. Có lẽ một lời giải thích tốt hơn hoặc mã nhiều hơn sẽ giúp đỡ. –

Các vấn đề liên quan