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

时间:2012-11-02 16:11:07

标签: javascript node.js haml meteor slim-lang

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

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

1 个答案:

答案 0 :(得分:1)

Tower.js包装了express.js模板引擎系统,因此您应该能够使用任何express.js模板引擎,方法是将以下内容添加到配置Tower.View.engine = "haml"

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

Slim虽然有问题。首先它不直接在mint.js内,所以你需要注册一个新的模板引擎。 Todo,你需要

  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;
    }
    
  2. 您需要通过require("mint").engines.slim = customAdapter
  3. 将适配器添加到mint.js

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

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