1

我目前正在对我的工作流程进行现代化改造,尤其是在前端部分,并开始在我上一个不需要后端的项目中使用require.jsqunitbackbone.jsunderscore.js等。

来自 Symfony2,我习惯于通常在 Twig 中编写模板,并让 Assetic 实现所有必要的魔法,如 js/css 缩小、资产等。研究表明,Assetic 目前无法像 require.js 那样提供 javascript 文件需要他们。

现在我真的很喜欢 RequireJS 背后的想法,即异步模块定义(AMD),并且想知道如何从 Symfony2 项目中的出色表现中获益。恕我直言,最明智的方法是减少 Symfony2 项目以简单地提供必要的数据,例如通过提供 RESTful 接口。这将进一步导致一个完全解耦的前端<>后端可以更独立地开发和测试。

我的问题是:我会不会失去一些 Symfony2 给我的好处,比如完整的表单处理(CSRF 保护、验证等)和安全性?有没有人已经这样做并且能够分享一些见解?是否有一些缺点/陷阱需要寻找?而且……值得吗?;-)

4

3 回答 3

3

在我的主树枝模板中,我定义了(例如 {% 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 的框架。但它只提供了一些辅助方法来进行restful通信。

另一方面,您可以与 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 结合使用。如有更多问题,请随时问我。

干杯

于 2013-10-26T14:53:29.920 回答
1

我们目前正在基于我们自己的 RESTful 框架重写我们的 Intranet 应用程序,该框架使用 Twig 和 jQuery,因为我们对SlimTonic和 Recess 等现有框架的各个方面感到失望。

我们发现集成声明式表单字段验证(负责一类 HTTP 资源的每个 PHP 类声明哪些表单字段有哪些验证要求,REST 框架在接收到的数据中强制执行这些)和原生JSON-HAL 导出(我们的 PHP 对象是 HAL 格式的,HAL 导出只是一个json_encode()调用)。

在 REST 框架中投入了大约一个人月的开发时间(包括评估其他框架)。您是否会认为“值得”取决于系统对您的业务的重要性:-)

于 2013-10-23T14:42:21.167 回答
0

您也可以使用Hearsay\RequireJSBundle。它将 Require.js 与 Assetic 集成,并允许您使用 Symfony2 配置系统配置 Require.js。

于 2014-10-27T09:17:45.147 回答