Lou*_*let 73 symfony angularjs
我正在开发一个在前端使用大量javascript的SF2应用程序.
SF2为我提供了一个很好的方法来构建一个漂亮的REST应用程序,使用doctrine管理我的数据库,使用twig进行模板等等,但我想使用Angularjs.
我知道angularjs SF2是2个不同的框架,有不同的方法,但我想知道这项工作的最佳方法是什么.
它甚至值得吗?
如果是,您认为更清洁,最有效的解决方案是什么?
也许使用php代替twig模板使用angularjs花括号?
Hal*_*oum 64
我认为Symfony2
可以很好地配合AngularJS
.证据是我使用Symfony在一侧创建API,在另一侧使用AnglularJS创建一个Web应用程序.
此外,由于某些原因,我在我的网络应用程序中生成我的观点Twig
.{% verbatim %} {% endverbatim %}
每次我需要在视图中使用Angular时,我只需在角色的语句中嵌入angular的花括号.
acm*_*cme 26
从Twig 1.12开始,原始标记被重命名为逐字:
{% verbatim %}
<ul>
{% for item in seq %}
<li>{{ item }}</li>
{% endfor %}
</ul>
{% endverbatim %}
Run Code Online (Sandbox Code Playgroud)
介于两者之间的所有内容都不会被Twig引擎解析,并且可以由AngularJS使用.
虽然我建议更改AngularJS分隔符.否则,在查看模板时很难区分Twig和AngularJS代码.
小智 17
我面临同样的情况,在我的情况下,我决定拆分客户端和服务器项目,我使用symfony2作为服务器端,因为除了其他优点之外,它还具有简单性和可用性.另一方面,我使用AngularJS创建了一个简单的HTML项目,这对我很有用,因为我想创建一个具有相同客户端文件的HTML5移动应用程序.
在这种情况下,我认为问题的核心在于身份验证和授权过程.您必须在服务器端实现用于在REST中工作的安全防火墙(例如WSSE:Symfony2:如何创建自定义身份验证提供程序).
然后在客户端(AngularJS)中相应的实现,我找到的最有用的资源: Github:witoldsz/angular-http-auth.
如果您希望使用sf2项目更深入地实现,可以使用Assetic的过滤器编译AngularJS,并在页面加载中获得性能.
gcm*_*105 13
我使用以下代码更改AngularJS delmiters
CoffeeScript的:
# Change the angular delimiters for twig compatability
# and load module with ngResource
WAFapp2 = angular.module("WAFapp2", ['ngResource'], ($interpolateProvider) ->
$interpolateProvider.startSymbol "{[{"
$interpolateProvider.endSymbol "}]}"
) var WAFapp2;
Run Code Online (Sandbox Code Playgroud)
或者Javascript:
var WAFapp2;
WAFapp2 = angular.module("WAFapp2", ['ngResource'], function($interpolateProvider) {
$interpolateProvider.startSymbol("{[{");
return $interpolateProvider.endSymbol("}]}");
});
Run Code Online (Sandbox Code Playgroud)
然后在我的布局的顶部:
<!DOCTYPE html>
<html lang="en" data-ng-app="WAFapp2">
<head>
Run Code Online (Sandbox Code Playgroud)
然后在我可以使用的html的body标签部分:
<ul>
{% for item in seq %}
<li>{[{ item }]}</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
我认为这样可以保持清洁,并且可以轻松混合树枝和角度标签.这似乎对我有用.
ken*_*ken 11
保持角度应用程序分离是更可取的.只需使用Symfony作为数据检索/持久性的api和安全提供程序.
这将允许更大的视图和数据层分离.因此,您可以在不考虑后端实现的情况下开始在前端工作.你只需要模拟api调用.
我一直在尝试使用Symfony和angularjs构建单页面应用程序.我使用Symfony2和FOSRestBundle来构建Restful API和Angularjs来构建前端.
就其本身而言,AngularJs不需要Symfony2框架来构建应用程序,只要它具有可与之通信的API.但是,我发现Symfony2在这些领域很有用:
在模板中翻译.在大多数情况下,API有效负载中的数据不需要转换.使用Symfony I18N支持模板非常有意义.
加载选项列表.假设您有一个包含200多个选项的国家/地区列表.您可以构建一个API来填充angularjs中的动态下拉列表,但由于这些选项是静态的,您只需在twig中构建该列表即可.
预加载数据/内容.如果您愿意,可以在托管页面中预加载模板或JSON数据
利用Symfony的身份验证功能.您也可以使用与应用程序的API相同的经过身份验证的会话.不需要使用Oauth.
Assetic包非常有用,可以简化和缩小AngularJs使用的一串Javascript文件
但是,我确实发现了以下挑战:
多个Ajax调用的PHP会话锁定.需要一种更好的方法来通过调用'session_write_close()'或使用数据库进行会话来释放php会话.在Symfony中调用'session_write_close'函数的最佳位置在哪里,以便我们可以尽快释放会话以获得更多ajax调用?
重新加载/同步加载的数据假设您有一个在浏览器中显示的项目列表(如ebay项目),您希望在服务器端更新列表时在客户端的浏览器中更新该列表.您可能需要定期轮询列表或使用类似Firebase的内容.Firebase在大多数情况下都是一种矫枉过正,对我来说轮询并不好看,但实现这一目标的最佳方法是什么?
请添加评论.谢谢
归档时间: |
|
查看次数: |
45181 次 |
最近记录: |