У меня есть приложение Moto Adverts в angularjs и nodejs. Angularjs-client-side работает на HTTP-сервере Apache (localhost: 8000), но nodejs-server-side запускается как node.js http-сервер (localhost: 3000).
Часть клиентского кода (angularjs):
var motoAdsServices = angular.module('motoAdsServices', ['ngResource']);
motoAdsServices.factory('Brand', ['$resource', function($resource) {
return $resource('http://localhost\\:3000/api/:id', {}, {
query: {
method: 'GET',
params: {
id: 'brands'
},
isArray: true
}
});
}]);
Часть серверного кода (nodejs):
var express = require('express');
var path = require('path');
var http = require('http');
var brands = require('./routes/brands');
var app = express();
var allowCrossDomain = function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
};
app.configure(function() {
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev')); /* 'default', 'short', 'tiny', 'dev' */
app.use(express.bodyParser()),
app.use(allowCrossDomain);
app.use(express.static(path.join(__dirname, 'public')));
});
app.get('/api/brands', brands.findAll);
http.createServer(app).listen(app.get('port'), function() {
console.log("Express server listening on port " + app.get('port'));
});
Мои вопросы:
- Что мне нужно сделать, чтобы запустить клиентскую и серверную стороны на одном сервере. a) На HTTP-сервере Apache (localhost: 8000). b) На сервере node.js self http на (localhost: 3000).
- Какая архитектура будет лучшей для использования в производстве - два независимых сервера для клиентской и серверной сторон или только один?
- Хорошо ли использовать совместное использование ресурсов Cross-origin (CORS) на стороне сервера (если мне нужно два автономных сервера)?
- Что я должен сделать, чтобы не жестко кодировать адрес http://localhost: 3000/api/brands на серверной стороне (лучшая практика)?