在Node.js中使用Slim或Haml&Sass/SCSS?

yll*_*ate 8 javascript haml node.js meteor slim-lang

我有一个相当强大的项目,其所有模板都在Slim和一个小Haml中实现.我正在考虑将项目转移到基于Node.js的结构(可能是在Tower.js或类似的东西上构建;也许是Meteor),但是我想继续使用Slim或Haml作为模板而不是转移到另一个模板发动机.

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

小智 0

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

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

但苗条是有问题的。首先,它不直接位于 mint.js 中,因此您需要注册一个新的模板引擎。您需要做的待办事项

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

    function(content, options, callback) {
      var result;
      result = require('hamljs').render(content, options || {});
      if (callback) {
        callback.call(this, null, result);
      }
      return result;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 您需要通过以下方式将适配器添加到 mint.jsrequire("mint").engines.slim = customAdapter

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

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