Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/blankeos/tsdot

⚡️ The fastest + concise javascript template engine for Node.js and browsers. Forked from doT.
https://github.com/blankeos/tsdot

dot dotjs handlebars template-engine templating templating-language

Last synced: 3 days ago
JSON representation

⚡️ The fastest + concise javascript template engine for Node.js and browsers. Forked from doT.

Awesome Lists containing this project

README

        

![dot.js](https://raw.githubusercontent.com/Blankeos/tsdot/refs/heads/main/_docs/banner.png)

tsdot



NPM Downloads

NPM Bundle Size
Bun
NPM License

tsdot is a template engine for JavaScript. It is similar to Mustache, EJS, Handlebars, and many others. This is a fork of the original [doT.js](https://github.com/olado/doT) template engine.

## Features

- 🔥 Super fast and super small
- ⚡️ Compile-time valuation
- ❇️ Custom delimiters, partials, conditionals, array iterators, encoding, white-space control, and much more.

The only new changes after the fork are:

- 🚀 First-class typescript support (more modern wow!)
- 💪 Works in the Browser, Node.js Bun, and Deno.
- 🤓 Better Docs :D (no, really)
- 🥳 More fun! (wow emojies)

## Installation

### JS/TS Projects

```sh
npm install tsdot
```

### Browser-only

```html

```

## Basic Usage

### JS/TS Projects

```ts
import tsdot from "tsdot";

const template = `


Hello, {{=it.name}}!



`;

// 1. Compile the template
const compiledTemplate = tsdot.compile(template);

// 2. Render the template with data
const result = compiledTemplate({ name: "World" });

//


//

Hello, World!


//

```

### Browser-only

```html


const template = `
<div class="container">
<h1>Hello, {{=it.name}}!</h1>
</div>
`;

const compiledTemplate = tsdot.compile(template);

// 2. Render the template with data
const result = compiledTemplate({ name: "World" });

```

## Reference

> [!WARNING]
>
> Work in progress, feel free to contribute a PR for examples/code snippets.

### Templating Language

> I think each of these need examples.

```sh
{{ }} - evaluation
{{= }} - interpolation
{{! }} - interpolation with encoding
{{# }} - compile-time evaluation/includes and partials
{{## #}} - compile-time defines
{{? }} - conditionals
{{~ }} - array iteration
```

### TypeScript API

```ts
// Compiles a template.
// - `tmpl`: The template string.
// - `c`: The template settings.
// - `def`: The template default values. (I think)
Dot.template(tmpl: string, c?: TemplateSettings | null, def?: Record): RenderFunction

// Function returned by Dot.template(). Use this to render the template.
RenderFunction> = (data: T): string // Function returned by Dot.template(). Use this to render the template.

// For express apparently.
Dot.compile(tmpl: string, def?: Record): RenderFunction
```

### Credits

- [doT.js](https://olado.github.io/doT/index.html) - Original by by Laura Doktorova. However, it's been super outdated and I couldn't install it properly without TypeScript complaining hard. Hence, motivated this fork with better tools like tsup nowadays.
- [Handlebars](https://handlebarsjs.com/guide/) - OG templating with great devx.
- [Mustache](https://mustache.github.io/) - Logic-less templates.