Nodejs / HapiJs与Angular.js

有人能解释我如何将nodejs(hapi服务器)和AngularJs结合起来吗? 我以为我可以捕捉到我的Hapi服务器的每个请求,并使用angularjs的路由/ REST等对这些请求作出反应…

服务器正在运行,并为我提供我所期望的index.html,但是,我愚蠢的钩在我的app.js的angular度的东西。 我想我的做法是完全错误的。

哈皮

server.route({ method: 'GET', path: '/{p*}', handler: function (request, reply) { reply.file('public/index.html'); } }); 

index.html(标题)

 <script src="CDN/angular.min.js"></script> <script src="./app.js"></script> 

我的index.html中的内联AngularJs代码正常工作。 我很感谢每一个回应或我可以看到的一些资源。

你的方法是为api而不是为静态文件服务。 服务器静态文件是这样的:

 // static file server.route({ method: 'GET', path: '/{param*}', handler: { directory: { path: Path.join(__dirname, 'public/app') } } }); 

在这里看到更多的信息http://hapijs.com/tutorials/serving-files

你的猜测是正确的。 如果您愿意与Hapi和AngularJS合作,推荐的方法是使您的Hapi应用成为使用JSON传输数据的REST风格的Web服务,而您的AngularJS应用将成为您的Web界面。

这样你就可以充分利用双方的优点。 AngularJS将使用其服务( $http$resource )从您的Web服务获取数据,并通过正确的视图呈现给您的应用程序path。

所有这些基本上是MEAN堆栈 ,但是您将使用Hapi而不是Express。

虽然Lugg的build议当然有效,但只有在没有Web服务器的情况下才能适用。 您应该将您的客户端应用程序与您的服务器应用程序分开组织,或者至less将您的服务器应用程序放在您的doc根目录之上的文件夹中

客户端应用程序将被设置为一个静态网站。 您的networking服务器将处理index.html和所有重新打包的Angular文件。 您的HTML和Angular / Javascript将处理请求的部分,js模块等。这样您就可以从您的所有Web服务器function和模块中受益。

然后,服务器端可以专门监听API请求并对其进行响应。 它不应该提供您的客户端应用程序文件。 它通常应该提供JSON响应。

这种方法更简单,并创build一个良好的客户端/服务器分离。 它使服务器端侧重于交付数据,而客户端侧重于处理UI。 这种关注的分离还允许其他客户端被写入并与您的服务器应用程序进行通信。

我相信我的答案只是Hodes答案的扩展。 我试图让我的答案更加明确,但是我认为总的想法是一样的。