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

我有一个相当健壮的项目,其所有的模板都在Slim和HAML中实现。 我一直在考虑开始把这个项目推到一个基于Node.js的结构上(可能是在Tower.js或类似的东西上构build的,也许是Meteor),但是我想继续使用Slim或者HAML作为模板,而不是转移到另一个模板引擎。

有没有人做过这个或花了时间来弄清楚如何做到这一点,如果是的话,你的发现是什么?

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

Tower.js使用薄荷 ,内置HAML,所以你只需要在你的目录中的haml模块 。

虽然苗条是有问题的。 首先它不在mint.js中,所以你需要注册一个新的模板引擎。 Todo,你需要

  1. 创build一个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将适配器添加到mint.js中。engines.slim require("mint").engines.slim = customAdapter

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

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