Nunjucks est un moteur de templating (ou moteur de modèles) puissant conçu pour JavaScript, fortement inspiré par le célèbre Jinja2 (utilisé en Python). Les fichiers portant l'extension .njk sont des fichiers de modèle Nunjucks. Ces fichiers sont structurés pour contenir un mélange de HTML (ou d'autres langages de balisage), de CSS, de JavaScript, ainsi que la 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 génère un fichier de sortie final (généralement du HTML) prêt à être servi au navigateur de l'utilisateur. Les modèles Nunjucks sont couramment utilisés dans le développement web pour la génération de pages web dynamiques, d'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 distinguer clairement 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 fréquemment utilisé avec Node.js, mais peut également être employé côté client dans le navigateur.