我正在用yo + grunt + angular.js开始我的第一个项目
我有一个需要从我的服务器读取一些数据的服务;我使用angular $ http服务构建它。
我还构建了一个RESTful Web服务(用PHP实现,但它可能是Java,C,Perl,......,无关紧要),它公开了一个API来获取数据。
grunt为我的ng-app提供服务的服务器目前(并且可能永远都是)运行PHP Web服务的地方(通过apache)。
我想知道这是否是一个可接受的架构...我最终在同一台服务器上有两个不同的服务器(grunt和apache)...更多,我总是要添加一个“Access-Control-Allow-Origin: 127.0.0.1“到我的PHP服务的输出......: - (
例如,可以从grunt提供PHP吗?
更新:我谈到开发阶段......当然在制作时我不会使用咕噜声......
为了更好地解释自己,我想在$ http()中使用相对URL ...在开发阶段和生产阶段使用相同的代码...
如果在生产中我可以期望它能够工作,因为我只有一个服务器用于部署的Angular应用程序和 PHP服务,当开发人员应该解释PHP时,当Grunt提供Angular应用程序时?咕噜咕噜?如果是,怎么样?
UDPATE 2,以及可能的解决方案:在对这个问题进行了相当多的思考(并且还阅读this文章),并且在这里没有得到满意的答案之后,我决定使用这种方法:
如果有人想对此解决方案发表评论,提出异议或提出更好的解决方案,我会感到非常高兴......
答案 0 :(得分:1)
我们在工作中解决问题的方法是在app文件夹中创建包含示例数据的平面文件,并使用$ resource和$ http的相对URL,然后将我们的代码部署为同一子目录级别的应用程序... / fx / api / fund例如。
这允许grunt提供一些静态的东西,用于查看Angular应用程序的设计,同时仍然提供完整的体验。然后我们有一个开发服务器,当我们提交代码(使用Jenkins)时我们可以检查实际功能并运行我们的测试套件。
这种方法有点笨拙,但它允许我们获得grunt方法的好处,并且仍然拥有测试服务器。我们的构建使用缩小版本,以便我们可以测试放大倍数不会破坏应用程序。
这种方法的唯一问题是带有grunt的内置Web服务器无法处理发布请求,因此调用帖子的任何内容都将失败。
答案 1 :(得分:1)
听起来你正在尝试和我做同样的事情。 (仅限本地开发的解决方案)
我正在使用yo angular来启动一个角度项目,但我想连接到一个php服务来提供一些内容。
我使用grunt-connect-proxy将我的帖子请求传递给apache。这很有效,除了在发送表单数据时$ _POST保持为空的事实,例如$http.post('/api',{"foo":"bar"})
。我发布了一个关于此的问题,但它仍然没有解决,我无法弄清楚如何使这项工作。无论如何,另一个解决方案是将所有内容保存在同一个文件夹/域中。
那是我的故事
实际上故事有一个尾巴。 最后我找出导致问题的原因see this post
答案 2 :(得分:0)
在自己对这个问题做了很多考虑之后,没有得到满意的答案,我在此后提出了我的结论: