在erb模板中嵌入ejs模板

mar*_*ter 5 ruby-on-rails erb ejs

我正在构建一个javascript-heavy rails 3应用程序.它使用了underscore.js,它有一个非常优雅的模板机制,建立在ejs(http://embeddedjs.com/)之上.

问题:embeddedjs大量借用erb语法,因此在erb模板中包含ejs模板会导致视图呈现问题.

有没有办法在erb文件中包含"非erb"部分?这将让我在erb文件中定义ejs模板.现在我正在使用一个hack,我有一个帮助程序,它读取包含ejs模板的文件的原始内容,并将其作为erb模板中的原始字符串输出.

kra*_*avc 3

我用这个技巧来解决这个问题:

// Using custom tags to be able to use regular for templates in templates
var ejs = require('ejs');
ejs.open = '{{';
ejs.close = '}}';

// Using html extension for custom ejs tags
app.register('.html', ejs);

app.set('views', __dirname + '/views');
app.set('view engine', 'html');
Run Code Online (Sandbox Code Playgroud)

这会将 <% %> 更改为 {{ }},让我将 <% %> 用于 JS 使用的模板。这对我有用,因为我没有经典样式模板 (<% %>)。

如果您有很多这样的模板,您可能想要执行相同的技巧,但对于 underscore.js 模板。