我在 angularjs 和 nodejs 中有 Moto Adverts 应用程序。Angularjs-client-side 在 Apache HTTP Server (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) 在 Apache HTTP 服务器 (localhost:8000) 上。b) 在 (localhost:3000) 上的 Node.js 自我 http 服务器上。
- 哪种架构最适合生产使用 - 客户端和服务器端有两个独立的服务器,还是只有一个?
- 在服务器端使用跨域资源共享 (CORS) 是一种好习惯(如果我应该有两个独立的服务器)?
- 我应该怎么做才能不将http://localhost:3000/api/brands硬编码到服务器端(最佳实践)?