Embedded JS template engine for Node, Deno, and the browser. Lighweight, fast, and pluggable. Written in TypeScript
Documentation - Chat - RunKit Demo - Playground
You’re viewing the source for Eta v3, which we just released! For v2, visit the old branch.
Eta is a lightweight and blazing fast embedded JS templating engine that works inside Node, Deno, and the browser. It’s written in TypeScript and emphasizes great performance, configurability, and small bundle size.
<%= someval + "string %>" %>
compiles correctly, while it fails with doT or EJSFor more thorough documentation, visit https://eta.js.org
Install Eta
npm install eta
In the root of your project, create templates/simple.eta
Hi <%= it.name %>!
Then, in your JS file:
import { Eta } from "eta";
// import { Eta } from "https://deno.land/x/[email protected]/src/index.ts";
const eta = new Eta({ views: path.join(__dirname, "templates") });
// Render a template
const res = eta.render("./simple", { name: "Ben" });
console.log(res); // Hi Ben!
“Eta” means tiny in Esperanto. Plus, it can be used as an acronym for all sorts of cool phrases: “ECMAScript Template Awesomeness”, “Embedded Templating Alternative”, etc…
Additionally, Eta is a letter of the Greek alphabet (it stands for all sorts of cool things in various mathematical fields, including efficiency) and is three letters long (perfect for a file extension).
@shadowtime2000 created eta-vscode.
eslint-plugin-eta was created to provide an ESLint processor so you can lint your Eta templates.
Currently there is no official Webpack integration but @clshortfuse shared the loader he uses:
{
loader: 'html-loader',
options: {
preprocessor(content, loaderContext) {
return eta.render(content, {}, { filename: loaderContext.resourcePath });
},
},
}
To operate with Eta templates in Node-RED: @ralphwetzel/node-red-contrib-eta
To render Eta templates in Koa web framework: @cedx/koa-eta
eta
Made with ❤ by @nebrelbug and all these wonderful contributors (emoji key):
Ben Gubler 💻 💬 📖 ⚠️ |
Clite Tailor 🤔 💻 |
Ioan CHIRIAC 💻 🤔 |
Craig Morten 💻 |
Rajan Tiwari 💡 |
shadowtime2000 💻 🤔 ⚠️ |
Hamza Hamidi 📖 |
Calum Knott 🤔 |
nhaef 💻 |
Gün 💻 |
This project follows the all-contributors specification. Contributions of any kind are welcome!