Recientemente me encontré con este problema y no quería volver a configurar EJS, así que cambié cómo el subrayado interpola, evalúa y escapa de valores.
Por defecto, estos son los valores actuales del guión de plantillas:
_.templateSettings = {
interpolate: /<%([\s\S]+?)%>/g,
evaluate: /<%=([\s\S]+?)%>/g,
escape: /<%-([\s\S]+?)%>/g
};
Entonces ha actualizado la configuración para:
_.templateSettings = {
interpolate: /\{\{=([^}]*)\}\}/g,
evaluate: /\{\{(?!=)(.*?)\}\}/g,
escape: /\{\{-([^}]*)\}\}/g
};
En otras palabras, el fragmento anterior cambiará lo siguiente en subrayado:
Interpolar
- Desde:
<%= ... %>
- Para:
{{= ... }}
- Expresión:
/\{\{=([^}]*)\}\}/g
Evaluar
- Desde:
<% ... %>
- Para:
{{ ... }}
- Expresión:
/\{\{(?!=)(.*?)\}\}/g
escape
- De
<%- ... %>
- Para:
{{- ... }}
- Expresión:
/\{\{-([^}]*)\}\}/g
Entonces mi plantilla subrayado es así:
// Underscore
<script type="text/template">
<ul>
{{ _.each(collection, function(model) { }}
<li>{{= model.text }}</li>
<li>{{- model.textEscaped }}</li>
{{ }); }}
</ul>
</script>
... y mis plantillas EJS siguen siendo los mismos y puedo seguir utilizando la sintaxis ERB por defecto para interpolar/evalúa valores: <% ... %>
y <%= ... %>
:
// EJS
<% if (isAuthenticated) { %>
<%= user.displayName %>
<% } %>
¿Por qué necesita ambos? ¿Y funcionan los corchetes, como se menciona aquí? http://code.google.com/p/embeddedjavascript/wiki/Testing – Marc
Estoy usando EJS con Backbone.js – deltanovember
¿están trabajando los corchetes para usted? – Marc