Grunt serve + PHP?

后端 未结 3 2096
Happy的楠姐
Happy的楠姐 2021-02-09 13:23

I\'m starting my first project with yo + grunt + angular.js.
I have a service which needs to read some data from my server; I built it using angular $http service. I\'ve als

相关标签:
3条回答
  • 2021-02-09 13:50

    It sounds like you are trying to do the same thing as me. ( solution for local development only)

    I am using yo angular to start an angular project, but I want to connect to a php service to deliver some content.

    I used grunt-connect-proxy to pass my post request to apache. This works well, except for the fact that $_POST remains empty when sending form-data e.g. $http.post('/api',{"foo":"bar"}). I posted an issue about this, but it still remains unsolved and I can not figure out how to make that work. Anyway, the other solution is to keep everything in the same folder/domain.

    That was my story

    Actually the story had a tail. Finally I figured out what was causing the problem, see this post

    0 讨论(0)
  • 2021-02-09 13:55

    Our solution to the problem at work was to create flat files with sample data inside the app folder and use relative URLs with $resource and $http and then deploy our code as an application at the same subdirectory level... /fx/api/fund for example.

    This allows grunt to serve up something static for seeing what the design will look like of the Angular app while still providing a full experience. Then we have a development server that gets updated when we commit code (using Jenkins) that we can check for real functionality and run our test suite against.

    This approach is a little clumsy but it allows us to get the benefits of the grunt approach and still have a testing server. We also have our builds use the minified version so that we can test that magnification won't break the app.

    The only problem with this approach is that the built in web server with grunt can't handle post requests so anything calling a post will fail.

    0 讨论(0)
  • 2021-02-09 14:05

    Not receiving a satisfactory answer, after thinking quite a bit about the issue myself, I provide hereafter my conclusions:

    • Development
      • Use a "production-like" server (Apache, lighttpd, ...) to serve real PHP pages.
        Use absolute urls with $http or $request to access that server (distinct from Grunt, which serves angular.js pages). The urls will be easily configurable, to require only a minimum work (and possible errors) to switch to production.
      • In PHP scripts, before producing (JSON) output, always output a proper "Access-Control-Allow-Origin" header; the value of the directive will also be easily configurable.

    • Production
      • Deploy angular.js app to the same server where PHP is deployed.
      • Change the urls, and make them relative, since now they share the same origin with client-side scripts.
      • Change the "Access-Control-Allow-Origin" header, to allow only local requests (or possibly remove that header at all...).
    0 讨论(0)
提交回复
热议问题