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