【问题标题】:Is there anything in PHP like middleman in Ruby?PHP 中有没有像 Ruby 中的中间人一样的东西?
【发布时间】:2012-01-19 21:44:34
【问题描述】:

我一直在与一个与 Middleman 一起带领我们的伙伴进行一个项目。我们使用 HAML 和 SASS 进行编码,他显然是 Ruby 开发人员。我想知道是否有任何类型的 PHP 等价物?我最终将领导一个团队,我对 PHP 比对 Ruby 更自在。

我想要一个布局文件(比如 Zend 的布局文件) 我想...在一个命令中,将所有源文件从 PHP 转换为静态 HTML,并将这些静态文件放在“构建”文件夹中,以便我们将其交给客户端。

有人知道一些很酷的东西可以实现这一点吗?非常感谢!

【问题讨论】:

  • 尝试每隔一段时间跳出你的舒适区......你会很高兴你做到了!
  • 我从未使用过 Ruby,但您是否正在寻找像 phrozn.info/en 这样的静态站点生成器,如果我是对的,我会作为答案 :)

标签: php ruby zend-framework middleman


【解决方案1】:

我从事的一个项目 www.findbigmail.com 一开始是完全用 PHP 编写的,然后我为另一个项目做了一些 Ruby/Rails 工作,回到 PHP 是一件苦差事。在使用HAMLSCSS 和 CSS 和 JS 缩小、哦和 Compass 等其他奇妙的东西来构建精灵之后,回到 PHP 并再次在嵌入 HTML 等的 PHP 文件中工作是很痛苦的。

因此,在纯粹的懒惰的驱使下,我环顾四周,发现了MiddleManApp (MM) - 沿途经过了几次侧面旅行。

现在,由 MM 构建的大部分静态 html 站点与一些 PHP 文件被发布到然后重定向回 html 页面之间有了非常强的分离。在我们需要更多动态行为的地方,我们向页面添加了 javascript,并让它们围绕我们预先存在的代码调用 PHP API 包装器。

我们的网站性能大幅提升(doh,现在都是静态的 html),并且当下一个 MiddleMan 版本推出时,它的缓存清除能力继承自Rails 3.1 资产管道。例如。我们将能够在我们的源脚本中引用main.css(它本身由诸如_index.scss_pricing.scss之类的子scss文件组成)并且它将使用对main-2348jlk23489kdj.css的引用来构建——允许我们将服务器设置为缓存一年和/或将更多文件部署到 CDN。

我们的工程性能也大幅提升。我们不再因为害怕在 PHP 代码中引入语法错误而不愿接触 UI 代码。并且不再有不匹配的 HTML 标签导致悲伤。另一位 PHP 开发人员不熟悉 Ruby/Rails 派生工具链,但很快就精通了(虽然他是摇滚明星开发人员,所以这并不奇怪!)

即将推出 i18n 支持。其中大部分已经在 MM 中,希望 Javascript 支持 很快就到了。

我们还探索了从添加了 PHP 的 HAML 生成页面。我们认为这可能很简单——例如将“:php”标签添加到 HAML 管道,然后根据需要使用 .php 部分。但是,我们发现在 Javascript 和将现有 PHP 代码包装为“引擎 API”之间,我们能够保持代码库整齐分离——我们发现我们更喜欢整体。

我希望这会有所帮助!很高兴解释更多。

【讨论】:

  • 您能否详细说明如何“发布到然后重定向回 html 页面”?
  • 当然。在静态 html 中,我们有一个
    ,比如说,它有一个 POST,它指向一个 PHP 的 url。然后,在 PHP 代码中,我们进行任何需要的处理,然后在 PHP 中我们调用 header('Location: ' . $urlTo);其中 $urlTo 设置为静态 HTML 页面之一。
【解决方案2】:

PHP 有一个叫做 Piecrust。

我最终为捆绑的 coffeescript、sass 等选择了 Middleman,但 Piecrust 做得很好。

http://bolt80.com/piecrust/

【讨论】:

    【解决方案3】:

    PHP 可以很容易地从 PHP 代码渲染静态 HTML:

    Easiest way to convert a PHP page to static HTML page

    Generate HTML Static Pages from Dynamic Php Pages

    PHP - How to programmatically bake out static HTML file?

    您可以将某些内容与现有的模板系统(例如 Twig)连接起来,或者使用 PHP Markdown 或多或少地模仿 Middleman 正在做的事情并从您的源文件创建静态 HTML 页面。

    编辑:正如上面提到的 Hari K T,http://www.phrozn.info/en/ 正是这样做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2011-05-03
      • 2020-12-17
      • 2020-07-30
      • 2013-07-30
      • 2014-09-29
      相关资源
      最近更新 更多