Nunjucks est un moteur de templating (ou moteur de modèles) puissant conçu pour JavaScript, fortement inspiré par Jinja2 (Python). Les fichiers portant l'extension .njk sont des fichiers de modèle Nunjucks. Ces fichiers contiennent généralement un mélange de HTML (ou d'autres langages de balisage), de CSS, de JavaScript et de syntaxe spécifique à Nunjucks. Cette syntaxe permet aux développeurs d'intégrer du contenu dynamique, tel que des variables, des boucles (loops) et des instructions conditionnelles, directement dans la structure du modèle. Lorsque le modèle est traité par le moteur Nunjucks, ces éléments dynamiques sont évalués et remplacés par leurs valeurs correspondantes, ce qui produit un fichier de sortie final (généralement HTML) prêt à être servi au navigateur de l'utilisateur. Les modèles Nunjucks sont couramment utilisés dans le développement web pour générer des pages web dynamiques, des e-mails et d'autres types de contenu. Ils favorisent la réutilisation du code et la séparation des préoccupations (separation of concerns) en permettant de séparer la logique de présentation de la logique d'application. Le moteur prend en charge des fonctionnalités avancées telles que l'héritage de modèles (template inheritance), l'échappement automatique (auto-escaping) et les filtres personnalisés, ce qui en fait un outil polyvalent pour la création d'applications web complexes. Nunjucks est souvent utilisé avec Node.js, mais peut également être employé côté client dans le navigateur.