我想使用 Symfony2 作为后端来创建 REST API 并使用 AngularJS 作为前端 。 2是完全分开的,即Symfony 2不会呈现任何内容,它只会将json数据发送给AngularJS。
我不确定如何配置我的网络服务器(nginx)。
The Symfony documentation gives the configuration但它适用于仅使用Symfony的网站,因此无法访问/web/
文件夹之外的所有内容。
我可以看到几种可能性:
/path/frontend
和/path/backend
)以及两个相应的网站。然后,我将有2个不同的地址来访问前端和后端(例如http://myfrontend.com
和http://mybackend.com
)。我看到的问题是我可能无法在AngularJS中直接使用AJAX调用。/website/frontend
和/website/backend
),只创建一个网站。然后,我可能需要使用http://example.com/frontend
和http://example.com/backend
之类的内容访问前端和后端。我不确定如何配置Web服务器(问题root /website/backend/web
)。web
文件夹中,但是我还需要更改配置,以便nginx不只是服务器app.php,app_dev.php和config .PHP。src
文件夹中,让Symfony处理路由。我不知道它是否会混淆AngularJS'一个路由。另外我可能还有其他一些应该可以访问的php,所以我也需要通过Symfony路由它们。你会建议什么以及为什么?也许我错过了一些明显的东西?
答案 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(']]');
}
);
不要误会我的意思,我实际上非常喜欢这两种协调的想法。
只是值得深思 - 干杯