docs(adr): ADR-0001: Use Tera as Default Template Engine
@aRustyDev ci sta già lavorando.
Dal 5/1/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
ADR-0001: Use Tera as Default Template Engine
Status
Accepted
Context
The mdbook-htmx backend needs a template engine to render HTMX-enhanced HTML pages. The skeleton files indicated support for multiple engines:
- Nunjucks (JavaScript)
- Handlebars (Rust/JS)
- Liquid (Ruby/Rust)
- Tera (Rust-native)
The backend is written in Rust to align with MDBook's ecosystem and ensure seamless integration via the mdbook-renderer crate.
Decision Drivers
- Language Consistency - Backend is Rust; prefer Rust-native engines
- Performance - Compile-time template validation, no FFI overhead
- Feature Parity - Must support: includes, extends, filters, conditionals
- Ecosystem Fit - Used by other Rust documentation tools (Zola)
- Maintenance - Active development, good documentation
Options Considered
Option A: Tera
Pros:
- Pure Rust, compiles with the backend
- Jinja2-compatible syntax (familiar to Python/Django developers)
- Template inheritance (
{% extends %},{% block %}) - Custom filters and functions
- Used by Zola (similar documentation use case)
- Compile-time syntax validation
Cons:
- Less feature-rich than full Jinja2
- Smaller community than Handlebars
Option B: Handlebars (handlebars-rs)
Pros:
- Rust implementation available
- Wide adoption across languages
- Logic-less philosophy (simpler templates)
Cons:
- No template inheritance (only partials)
- Verbose for complex layouts
- Logic-less can be limiting for HTMX patterns
Option C: Liquid (liquid-rust)
Pros:
- Rust implementation available
- Simple syntax
- Used by Jekyll
Cons:
- Limited control flow
- No template inheritance
- Less expressive for component-based layouts
Option D: Nunjucks (via wasm or subprocess)
Pros:
- Full Jinja2 compatibility
- Rich feature set
Cons:
- JavaScript runtime dependency
- Performance overhead (subprocess or WASM)
- Complicates build/distribution
Decision
Use Tera as the default template engine.
Rationale:
- Pure Rust eliminates external dependencies
- Template inheritance is essential for
layout.html→page.htmlpattern - Jinja2 syntax is widely known
- Zola uses Tera for similar documentation purposes, proving suitability
- Custom filters enable
{{ asset('path') }}helper for hashed filenames
Consequences
Positive
- Single-binary distribution (no runtime dependencies)
- Fast template compilation and rendering
- Familiar syntax for most developers
- Strong typing integration with Rust structs
Negative
- Users familiar with Handlebars/Liquid need to learn Tera
- Some advanced Jinja2 features not available
Mitigation
- Document Tera syntax in SPEC
- Provide example templates
- Consider optional Handlebars support in future (via feature flag)
References
- Lingua principale
- Rust
- Stelle
- 0
- Fork
- 1
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di aRustyDev/mdbook-htmx
-
feat(ci): Implement cross-repo-validate compliance for docs syncForse di nuovo libera @aRustyDev l’ha presa 282 giorni fa e non c’è nessuna pull request aperta. Apertaci enhancement
aRustyDev/mdbook-htmx#58 · 1 commento · 1 assegnatario ·
-
docs(htmx): Explain how HTMX worksForse di nuovo libera @aRustyDev l’ha presa 285 giorni fa e non c’è nessuna pull request aperta. Aperta
aRustyDev/mdbook-htmx#48 · 3 commenti · 1 assegnatario ·
-
docs(mdbook-htmx): Parent Issue for documentationForse di nuovo libera @aRustyDev l’ha presa 285 giorni fa e non c’è nessuna pull request aperta. Apertadocumentation
aRustyDev/mdbook-htmx#47 · 1 assegnatario ·
-
docs(examples): Secure Self-Hosted Meilisearch via CloudflareForse di nuovo libera @aRustyDev l’ha presa 285 giorni fa e non c’è nessuna pull request aperta. Apertadocumentation
aRustyDev/mdbook-htmx#46 · 1 assegnatario ·
-
docs(examples): Kubernetes with MeilisearchForse di nuovo libera @aRustyDev l’ha presa 285 giorni fa e non c’è nessuna pull request aperta. Apertadocumentation
aRustyDev/mdbook-htmx#45 · 1 assegnatario ·
Tutte le issue di aRustyDev/mdbook-htmx
Issue simili
-
The book has a Nix install section that chelis.ch lacks, and it names two of the three systemsApertaarea:ecosystem documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Chelis-Lang/chelis#3866 ·
I maintainer di solito rispondono entro 1 giorno
-
[安卓Feature]: 数字键盘左侧符号区域大小优化Apertaenhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
metasequoiaime/msime#8620 ·
I maintainer di solito rispondono entro 1 giorno
-
agent-detection macos p2 triaged
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
bug documentation sev-0
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno