建议将AngularJS的nginx设置为前端,将Symfony2设置为后端

时间:2014-08-01 03:56:13

标签: angularjs symfony nginx

我想使用 Symfony2 作为后端来创建 REST API 并使用 AngularJS 作为前端 。 2是完全分开的,即Symfony 2不会呈现任何内容,它只会将json数据发送给AngularJS。

我不确定如何配置我的网络服务器(nginx)。

The Symfony documentation gives the configuration但它适用于仅使用Symfony的网站,因此无法访问/web/文件夹之外的所有内容。

我可以看到几种可能性:

  1. 创建2个不同的目录(例如/path/frontend/path/backend)以及两个相应的网站。然后,我将有2个不同的地址来访问前端和后端(例如http://myfrontend.comhttp://mybackend.com)。我看到的问题是我可能无法在AngularJS中直接使用AJAX调用。
  2. 创建2个不同的目录(例如/website/frontend/website/backend),只创建一个网站。然后,我可能需要使用http://example.com/frontendhttp://example.com/backend之类的内容访问前端和后端。我不确定如何配置Web服务器(问题root /website/backend/web)。
  3. 将AngularJS目录放在Symfony的web文件夹中,但是我还需要更改配置,以便nginx不只是服务器app.php,app_dev.php和config .PHP。
  4. 将AngularJS目录放在Symfony的src文件夹中,让Symfony处理路由。我不知道它是否会混淆AngularJS'一个路由。另外我可能还有其他一些应该可以访问的php,所以我也需要通过Symfony路由它们。
  5. 你会建议什么以及为什么?也许我错过了一些明显的东西?

2 个答案:

答案 0 :(得分:3)

我猜您可以使用任何这些方法完成任务。这将归结为您希望如何构建应用程序以及它的目标是什么。对于大型项目,第一种方法(将API与AngularJS分开)将为您提供良好的服务。 Twitter真的让这个软件模型变得更大。

所以我建议采用方法一。您所要做的就是在服务器块中指定一个允许跨域访问另一个域的Nginx头。因此,您可以在frontendangular.com网站中指定以下指令:

add_header Access-Control-Allow-Origin backendsymfony.com;

这样,每当页面请求进入您的前端应用程序时,Nginx会告诉浏览器访问另一个域(您的symfony设置)是安全的。

答案 1 :(得分:0)

这两个框架都具有强大的路由功能,看起来你是两全其美的。任何设置都有许多优点和缺点,因此我会列出一些想到的内容:

  • 角度路由/模板效果很好,但会留下搜索引擎优化和元问题。使用symfony2管理主要页面可能会更好,并且每个页面中的任何路由都是有角度的。这将允许您仍然使动态页面不会损害您的元和SEO控制。访问控制似乎很灵活,但可能没有必要,我只是将所有调用放在http://www.thesite.com/api下的REST API中,如果我需要另一个类似https://api.thesite.com的设置,nginx可以在不离开域的情况下路由或代理传递。< / p>

  • 定位部分内容有点不稳定,但对于大型应用程序来说可能很好。请注意,您可能需要搜索[host] / [path] /web/bundles/someBundle/public/blah...的js位置对象。或者您可以设置&#39; / partials&#39; nginx中的路径。

  • Twig和Angular tpl 可能会导致令人困惑的混音,因为他们都使用{{foo}}。这就让我重新考虑混合2,我可能会选择使用前端服务器,例如带有ejs的节点,我也可以从API发送的数据的流式传输中受益。

你可以轻松地解决它,但它仍然有关:

angular.module('myApp', []).config(function($interpolateProvider){
           $interpolateProvider.startSymbol('[[').endSymbol(']]');
       }
 );
  • 你确实可以获得有角度的部分作为symfony twig的好处,这可能是好的或坏的,这取决于你如何看待使用的灵活性。我看过有人用symfony数据填写表格的例子,但它们只是破坏了角度绑定的力量。

不要误会我的意思,我实际上非常喜欢这两种协调的想法。

只是值得深思 - 干杯

相关问题