Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/blankeos/tsdot
- Owner: Blankeos
- License: mit
- Created: 2024-12-06T04:12:39.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2024-12-25T09:55:46.000Z (about 2 months ago)
- Last Synced: 2024-12-25T10:28:58.784Z (about 2 months ago)
- Topics: dot, dotjs, handlebars, template-engine, templating, templating-language
- Language: TypeScript
- Homepage:
- Size: 173 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
![dot.js](https://raw.githubusercontent.com/Blankeos/tsdot/refs/heads/main/_docs/banner.png)
tsdot
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.