我正在开发一个小团队的Web应用程序,经过研究和研究,我们发现分离后端和前端项目是一个很好的做法.因此,我们将使用hapijs和
mysql数据库开发后端作为REST API,使用angularjs开发前端.
但是在生产环境中,它们必须位于同一台服务器上,对吗?如果它们位于不同的存储库中,我们如何将它们部署到同一服务器?
我们是一个相当新的团队,开始我们在网络开发方面的冒险,所以我们正在研究很多事情以使事情正确.
我们的技术堆栈将是:
>网络服务器的Hapijs
> orm的续集
> socket.io用于聊天功能
> mocha进行单元测试
>前端的angularjs
我们将使用microsoft azure来托管我们的网络应用程序.
谢谢你的答案和帮助.
解决方法
它们不必位于同一服务器中.将后端放在不同的服务器上是完全没问题的,如果你需要扩展你的后端/前端而不是另一个,那么它也很方便.
有几种可能性:
>您可以使用像RabbitMQ这样的消息代理在两个微服务之间进行通信
>您的前端应用程序可能会暴露您的后端URL并在AJAX请求中使用它,这需要您的后端启用CORS.不是这种方法的粉丝.
>在前端使用相对URL,然后使用特定模式(如/ api / *)将请求通过管道传递到后端.您的AngularJs应用程序是由Node.js服务器提供的,还是Hapi.js服务器?
如果Node.js像
:
app.all(['/api/*','/fe/*'],function(req,res) { console.log('[' + req.method + ']: ' + PROXY + req.url); req.pipe(request({ url: PROXY + req.url,method: req.method,body: req.body,rejectUnauthorized: false,withCredentials: true })) .on('error',function(e) { res.status(500).send(e); }) .pipe(res); });
其中PROXY_URL是后端服务器的url / ip.
没有在hapi.js中完成它,但它也应该是可能的.
我相信还有更多的选择,那些是我熟悉的.