【问题标题】:Yeoman vs SymfonyYeoman vs Symfony
【发布时间】:2014-04-01 11:21:44
【问题描述】:

我刚开始学习如何使用 Symfony2 框架构建网页。

我习惯使用 Yeoman 生成器提供的 Grunt 任务来处理缓存、缩小、连接等。

现在我知道,Symfony 也有自己的解决方案,即:asset() 助手和 Assetic。

据我所知,yeoman 任务和 Symfony 方法似乎不兼容。

使用 symfony {{ asset('asset-src-path') }} 语法,yeoman 任务将无法工作。

我应该扔掉整个 yeoman 的东西,并使用 Symfony 辅助函数和过滤器吗?

我更喜欢 yeoman,我已经习惯了,我喜欢为产品预处理资产。网站。

注意:我必须使用assetic() 助手,这样我才能处理url 重写。

【问题讨论】:

  • 好问题 - 我想这取决于您的项目架构。如果您在应用程序的前端和后端之间有明确的界限;例如,您的前端是一个使用 Angular 的单页应用程序,而 Symfony2 是您的 API 层,显然将应用程序分成两个项目/组件是有意义的。但是,我认为您的情况并非如此?有趣的是,Symfony2 有一个 yeoman 生成器。也许值得一瞧? npmjs.org/package/generator-symfony
  • 我检查过了,但它的资产是由绝对 url 而不是项目相关的。所以:“/images/asd.png”而不是“{{asset('images/asd.png') }}”。这绝对是不行的。无论如何感谢您的建议! ^^
  • 该死 :) 这是一个有趣的问题 - 似乎其他人也在网上思考过类似的问题。如果你找到适合你的东西,绝对值得添加一个自我回答!
  • 我还有一个与此类似的问题:stackoverflow.com/questions/22779809/yeoman-vs-urlrouting 在这里我很可能会针对该特定问题发布解决方案,距离这个问题不远。

标签: symfony gruntjs yeoman


【解决方案1】:

据我所知,没有简单的方法可以实现我想要的。

幸运的是,没有真正的理由来解决这个问题,因为 - 正如我在问题中提到的 - Symfony 拥有 Assetic,这是一个很好的解决方案。

请注意,我确实在一个项目中尝试了 yeoman+symfony 解决方案,最终奏效了,但我认为这真的不值得。

干杯

【讨论】:

    【解决方案2】:

    Yeoman 没有做你提到的任何事情,它只是一个可配置的生成器。 yeoman 所做的只是提示开发人员提供一些选项,然后它只是下载、调整而不是将一大堆文件转储到文件夹中。它只运行一次——它只是为了搭建其他工具。

    Grunt 是一个内置于 Node.js 中的任务运行器。它有点像 yeoman,因为它自动重复,但它接管了 yeoman 离开的地方。虽然 yeoman 在项目开始时运行并且永远不会再次运行(通常),但 grunt 在您开发时会连续运行。这里最大的区别是 yeoman 的生成器和 grunts 任务几乎不会相互接触——yeoman 不是为 grunt 构建的,反之亦然。例如,一个 yeoman 生成器可能会创建一个配置良好的 Gruntfile.js,但由开发人员来扩充这个 Gruntfile.js 以满足新的需求。

    Symfony2 是一个用 PHP 编写的 Web 框架。您可以使用 yeoman 搭建 Symofny2 应用程序,并使用 Grunt 来执行某些任务(尽管 Symfony2 附带了它自己的任务运行器,但 Grunt 在前端仍然非常出色)。 Symfony2 是一个非常丰富的、动态的模块组合,用于处理 HTTP 请求和响应(以及其他事情)。您可以编写一个将 Grunt 连接到 Symfony2 的 yeoman 生成器,或者您可以使用 Symfony2 的控制台组件来运行您的任务。

    这三个都是灵活的,但它们不能互换:它们都关心不同的事情。

    这适用于您的链接问题:Yeoman vs UrlRouting

    【讨论】:

    • 感谢您的长篇回答!我确实知道这些工具之间的区别,我只是在 Symfony 模板中连接我的依赖项时遇到了麻烦,因为不知何故我无法正确配置由 Yeoman 生成的 Grunt 任务。由于我目前正在使用 Gulp,并且正在重新设计我的前端工作流程,因此我将尝试让 Symfony 和 Wiredep 一起工作。 (我更喜欢使用哈希命名的资产解决方案而不是 Assetic 的手册“asset_version”更新。)我还发现这个链接可能是一个带有 grunt 的解决方案:github.com/stephenplusplus/grunt-wiredep/issues/108
    • 对,你问的是 Yeoman + Symfony——而不是 Yeoman vs. Symfony。
    • 是的,回想起来我觉得他们并没有很好地合作,所以我认为标题中的“vs”是合适的。 :) 现在我认为这有点过分夸大了。
    • 听起来不错 :) 我主要是在提醒您考虑问题的质量有时比答案更重要。也许标题唤起了某种有效的心态,但最终我的回答主要是为了指出这个问题本身具有误导性。您显然知识渊博,因此不要将批评视为对您能力的反映。我们最终都会问一些在前提上存在根本缺陷的问题。我认为你有一个合理的问题,但你的问题或答案都不能很好地说明你真正想要发现的东西。
    • 我同意你所说的一切。实际上,自从发布这个问题以来,我已经走了很长一段路,我目前正在开发一个工具集 - 由 yeoman 生成器、gulp 任务、javascript 模块(浏览器)、类似 BEM 的 sass 约定等组成 - ,一旦我完成,我会正确回答我的问题。 :)
    猜你喜欢
    • 2014-05-11
    • 2012-10-29
    • 2014-09-14
    • 2015-07-28
    • 1970-01-01
    • 2013-06-15
    • 2013-04-02
    • 2022-11-11
    • 1970-01-01
    相关资源
    最近更新 更多