我有一个相当强大的项目,其所有模板都在Slim和一个小Haml中实现。我正在考虑将项目转移到基于Node.js的结构(可能是在Tower.js或类似的东西上构建;也许是Meteor),但是我想继续使用Slim或Haml作为模板而不是转移到另一个模板发动机。
有没有人这样做或花时间弄清楚到目前为止如何实现这一目标,如果有,你的发现是什么?
答案 0 :(得分:1)
Tower.js包装了express.js模板引擎系统,因此您应该能够使用任何express.js模板引擎,方法是将以下内容添加到配置Tower.View.engine = "haml"
Tower.js使用内置HAML的mint,因此您只需要目录中的haml module。
Slim虽然有问题。首先它不直接在mint.js内,所以你需要注册一个新的模板引擎。 Todo,你需要
创建一个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;
}
require("mint").engines.slim = customAdapter
但Slim没有express.js引擎,而且由于Slim包含ruby代码片段,因此不太可能会出现这种情况。
如果你真的想这样做,那么你需要为模板文件创建自己的javascript解析器(可能使用类似http://opalrb.org/的东西,虽然没有特定的ruby库),然后创建一个express.js引擎(我不知道如何)。
我怀疑这将是一次非常富有成效的演习。
我建议您将Slim文件转换为haml(或jade,或者可以由express.js使用的任何模板引擎),或者不要移动。
我也找不到任何方法可以自动将Slim转换为haml或任何其他模板引擎(可能是因为它包含ruby代码),所以你必须完全手动完成转换。