EJS
Embedded JavaScript templates for node
...The idea is to avoid introducing a separate DSL for templating and instead use familiar JavaScript logic inside template tags to generate dynamic content. You write templates using <% %> scriptlet tags, <%= %> for output, and you can include other templates, pass data, and control flow with loops and conditionals. It’s fast because it compiles templates to JavaScript functions and caches them by default, so subsequent rendering is efficient. EJS supports both server-side render (in Node/Express) and client-side use in the browser, making it versatile for universal apps. Because you’re using raw JS, debugging is simple—the errors are standard JS stack traces with template line numbers included. ...