在erb模板中嵌入ejs模板

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

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

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

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

 // 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'); 

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

如果你有很多那些你可能想要做同样的技巧,但对于underscore.js模板。

您可以将ejs保存为单独的文件,而不是将其作为文本(不会被评估为erb)呈现在脚本标记内。

在你的部分内部:

 ` 

在您的JavaScript文件中:

 new EJS({element: document.getElementById('my_awesome_template')}).render(data) 

转义你的下划线变量:(你不想要插入的那些)

 <%= foo %> becomes: <%%= foo %>