They both use the same syntax for inserting variables. For example if I want the following
<%= username %>
In my Underscore, my main EJS breaks because it tries to replace username and no such variable exists in the main page.
They both use the same syntax for inserting variables. For example if I want the following
<%= username %>
In my Underscore, my main EJS breaks because it tries to replace username and no such variable exists in the main page.
I think square brackets will work in EJS by default:
And if you need to get fancier, the EJS github page describes how to create custom tags:
https://github.com/visionmedia/ejs
Using the client side GitHub example, you'd need to do syntax like this when you render:
Options are the 2nd parameter of the
render()
.I had this issue and thought I would share the solution I found for solving the issue client side. Here is how your change the escape regex (via underscore.js docs):
Changes the <%= %> to {{ }}.
I recently ran into this issue and I didn't want to reconfigure EJS, so I changed how underscore interpolates, evaluates, and escapes values.
By default, here are the current underscore templating settings:
Then I updated the settings to:
In other words, the snippet above will change the following in underscore:
Interpolate
<%= ... %>
{{= ... }}
/\{\{=([^}]*)\}\}/g
Evaluate
<% ... %>
{{ ... }}
/\{\{(?!=)(.*?)\}\}/g
Escape
<%- ... %>
{{- ... }}
/\{\{-([^}]*)\}\}/g
Then my underscore template looks like this:
...and my EJS templates remain the same and I can continue to use the default ERB syntax to interpolate/evaluates values:
<% ... %>
and<%= ... %>
:I had the same issue when I wanted to render the webpage using ejs template on back-end (express), meanwhile I had to use underscore template on front-end.
I tried Marc's answer but it doesn't help, I think it has been out of date to use in newer version. In newer version of ejs(mine is
2.3.3
), you can no longer useejs.open
andejs.close
, useejs.delimiter
instead.I changed the delimiter to '$' in ejs so ejs would only handle with
<$ $>
tag to insert variables and take<% %>
tag as meaningless syntax.NOTE: I add the code above in
app.js
file in express applications and it worked fine, and if you want to use it on front-end, just pass{'delimiter': '$'}
inejs.render(str, options)
as options argument.