在Symfony2项目中可以使用require.js和异步模块定义(AMD)
Using require.js and Asynchronous Module Definition (AMD) possible in a Symfony2 project?
我目前正在对我的工作流程进行现代化改造,尤其是在前端部分,并在我上一个不需要后端的项目中开始使用require.js,qunit,backbone.js,underscore.js等。
来自Symfony2,我习惯于通常用Twig编写我的模板,并让Assetic制作所有必要的魔法,如js/css缩小,资产等。 研究表明,Assetic目前无法按照需要的方式提供javascript文件.js需要它们。
现在我真的很喜欢RequireJS,异步模块定义(AMD)背后的想法,并且想知道如何在Symfony2项目中从它的出色功能中受益。恕我直言,最明智的方法是减少 Symfony2 项目,以简单地提供必要的数据,例如通过提供 RESTful 接口。这将进一步导致一个完整的解耦的前端<>后端,可以更独立地开发和测试。
我的问题是:我不会失去Symfony2给我的一些好处,比如完整的表单处理(CSRF保护,验证等)和安全性吗?有没有人已经这样做了,并且能够分享一些见解?是否有一些缺点/陷阱需要寻找?和。。。值得吗?;-)
在我的主树枝模板中,我定义了(例如 {% block js %})像这样的 JavaScript 部分
<script type="text/javascript">
var config = {
getCoreBundleName: function() {
return 'openframeworkcore';
},
getPath: function(bundleName, filePath) {
return bundleName + '/components/' + filePath;
},
getCorePath: function(filePath) {
return this.getPath(this.getCoreBundleName(), filePath);
}
};
require.config({
baseUrl: '{{ app.request.getBasePath() }}/bundles/',
paths: {
core: 'openframeworkcore/core/js/core',
bootstrap: config.getCorePath('bootstrap/dist/js/bootstrap')
},
shim: {
bootstrap: {
deps: ['jquery']
},
fancybox: {
deps: ['jquery', 'jquery-mousewheel']
},
angular: {
exports: 'angular'
},
restangular: {
deps: ['underscore', 'angular']
},
'jquery-ui': {
deps: ['jquery']
}
}
});
// loads the core.js
require(['core']);
</script>
我的情况我使用了 restangular。一个使用 rest 方法扩展 angularjs 的框架。但它只提供了一些辅助方法来交流休息。
另一方面,您可以与Symfony2完美地工作
/**
* @Route("/create")
* @Method({"GET"})
* @Template()
*/
public function createAction(Request $request)
{
$entityManager = $this->getDoctrine()->getManager();
$form = $this->createForm(new BoardType());
return array(
'form' => $form->createView()
);
}
我已经将requirejs与Symfony2结合起来了如需进一步的问题,请随时问我。
干杯
我们目前正在基于我们自己的RESTful框架重写我们的内部网应用程序,该框架使用Twig和jQuery,因为我们对现有框架(如Slim,Tonic和Recess)的各个方面感到失望。
我们发现,集成声明式表单字段验证(负责一类 HTTP 资源的每个 PHP 类声明哪些表单字段具有哪些验证要求,REST 框架在接收的数据中强制执行这些要求)和本机 JSON-HAL 导出(我们的 PHP 对象是 HAL 格式的,HAL 导出只是一个json_encode()
调用)之类的东西是相当简单的。
在REST框架中投入了大约一个工月的开发(包括评估其他框架)。您是否认为"值得"取决于系统对您的业务的重要性:-)
使用Hearsay''RequireJSBundle。它将Require.js与Assetic集成在一起,并允许您使用Symfony2配置系统配置Require.js。
- 如何使用异步模块的请求
- Nodejs模块函数返回未定义的,而不是异步的
- 使用Socket.io的异步模块加载(AMD)
- 在Node.js中使用异步模块时出现问题
- 如何测试运行 node-fluent-ffmpeg(异步模块)的自定义模块
- 使用异步模块的Express + Mongoose请求处理程序的更简洁的方法
- 利用异步 NPM 模块
- 异步加载 NPM 模块
- Node.js模块的异步初始化
- 节点.js - 异步模块加载
- 使用其他模块中的函数,避免异步回调地狱
- NodeJS异步模块:如何在回调中获取results对象
- 从具有异步函数的 Node.js 模块返回值
- 从视图调用异步加载模块函数
- 使用 SystemJS/jspm 在生产环境中加载异步的 es5 模块
- 节点.js异步模块问题
- 节点 JS Express 模块是否异步处理请求
- NodeJS:异步模块:传递参数
- 在Symfony2项目中可以使用require.js和异步模块定义(AMD)
- 模块异步.使代码按顺序运行