8

我有一个相当健壮的项目,它的所有模板都用 Slim 和一点 Haml 实现。我正在考虑将项目转移到基于 Node.js 的结构(可能构建在 Tower.js 或类似的东西之上;可能是 Meteor),但是我想继续使用 Slim 或 Haml 作为模板,而不是转移到另一个模板引擎。

到目前为止,有没有人这样做或花时间弄清楚如何做到这一点,如果是这样,你的发现是什么?

4

1 回答 1

0

Tower.js 包装了 express.js 模板引擎系统,因此您应该可以通过将以下内容添加到配置中来使用任何 express.js 模板引擎Tower.View.engine = "haml"

Tower.js 使用内置 HAML 的mint,因此您只需要目录中的haml 模块

苗条是有问题的。首先它不是直接在 mint.js 中,所以你需要注册一个新的模板引擎。你需要做的待办事项

  1. 创建一个customAdaptermint.js 可以使用的函数,你可以查看 mint.js 源代码。下面是一个haml适配器函数的例子:

    function(content, options, callback) {
      var result;
      result = require('hamljs').render(content, options || {});
      if (callback) {
        callback.call(this, null, result);
      }
      return result;
    }
    
  2. 您需要通过执行将适配器添加到 mint.jsrequire("mint").engines.slim = customAdapter

但是 Slim 没有 express.js 引擎,而且由于 Slim 包含 ruby​​ 代码片段,所以不太可能会有。
如果您真的想这样做,那么您需要为模板文件创建自己的 javascript 解析器(可能使用类似http://opalrb.org/之类的东西,尽管没有特定的 ruby​​ 库),然后创建一个 express。 js引擎(我不知道怎么做)。

我怀疑这将是一个非常富有成效的练习。
我建议你要么将你的 Slim 文件转换为 haml(或 jam,或 express.js 可以使用的任何模板引擎),要么不要采取行动。
我也找不到任何方法可以自动将 Slim 转换为 haml 或任何其他模板引擎(可能是因为它包含 ruby​​ 代码),因此您必须完全手动进行转换。

于 2013-04-22T09:59:20.987 回答