11570 sujets

JavaScript, DOM et API Web HTML5

Modérateur
Bonjour les amis,

J'ai un petit dilemme. Comme certains le savent, je développe un moteur de template ultra léger. Dernièrement, j'ai ajouté 2 petites extensions sur les partials. Désormais, les partials peuvent être dynamique et/ou peuvent recevoir des paramètres.

Avant hier, je me suis aperçu d'un petit bug (collision variable). J'ai remis en question ces 2 extensions.

Dans un premier temps, j'ai unifié les 3 extensions en une seule (environ 800 octets gzip).
Puis de ce résultat, j'ai fait 2 décorateurs :
- j'ai gardé le partial initial (250 octets gzip)
- un décorateur pour le partial dynamique (350 octets gzip)
- un décorateur pour le partial paramétrable (450 octets gzip)

Si vous utilisez ma librairie, que préféreriez-vous ?
- utiliser ce dont vous avez besoin (la base partial + 2 décorateurs => le poids est sensiblement plus lourd
- utiliser partial complet (bien que certaines features ne vous soient pas utiles)

Mon idée sur cette librairie est : utiliser ce dont vous avez besoin et chaque octet compte.

Merci d'éclairer ma lanterne.

Bonne journée à vous tous
Modifié par Niuxe (30 Jan 2026 - 16:52)
Administrateur
Avis rapide et pas forcément pertinent Smiley cligne : la différence semble minime par rapport à l'impact sur l'usage et sur le temps de cerveau nécessaire pour gérer les deux situations. Si je comprends bien il peut y avoir une différence de ~200 octets, en terme de réseau cela reviendra au même.

Chaque requête HTTP est encapsulée dans plusieurs couches (merci OSI) donc pour envoyer ne serait-ce que 10 octets on doit se farcir les en-têtes de chaque couche. TCP : ~20 octets, IP : ~20 octets, Ethernet : ~14 octets, et la meilleure HTTP : en moyenne plusieurs centaines d'octets (Cookies, User-Agent, etc.) De plus la machine utilise les mêmes ressources (processeur, ram, couche réseau), et en TCP on découpe par segments de ~1500 octets (= MTU).

Donc (si j'ai bien compris la situation), tu utiliseras de toute façon au moins un paquet réseau, avec la même latence, bande passante, réactivité.
Meilleure solution
Pour moi, privilégier les décorateurs séparés paraît logique, chaque octet compte surtout si on vise la légèreté et la modularité Smiley cligne ????
Modérateur
@Rodolphe
Merci beaucoup pour ton intervention. Je viens de déployer une nouvelle version (1.2.1). J'ai suivi tes conseils qui me paraissent pertinents. Si on fouille dans le code source, on peut faire appel à l'autre façon de faire. Mais je n'ai pas rendu cela officiel.

Tiralem a écrit :
Pour moi, privilégier les décorateurs séparés paraît logique, chaque octet compte surtout si on vise la légèreté et la modularité Smiley cligne ????


Si tu veux, tu peux. Voilà l'url du code source :
https://github.com/niux3/template-engine/tree/main/src/plugins/experiments

Comment ça fonctionne ?

import {PartialsCorePlugin} from './plugins/experiments/partials_core.js'
import {withDynamic} from './plugins/experiments/partials_dynamic.js'
import {withParams} from './plugins/experiments/partials_params.js'

const engine = new Template()
engine.use(withParams(withDynamic(PartialsCorePlugin)))
// ...

Modifié par Niuxe (02 Feb 2026 - 16:57)
Salut,
pour moi, petit développeur dans son coin qui en est resté au html, css, javascript et une touche de php, tout ceci est du chinois (ce qui n'en altère pas la valeur, bien sûr).
Pourrais-tu développer une courte explication pour les néophites comme moi de ce que je pourrais faire avec templaeEngine ? Smiley smile
Bongota a écrit :
Salut,
pour moi, petit développeur dans son coin qui en est resté au html, css, javascript et une touche de php, tout ceci est du chinois (ce qui n'en altère pas la valeur, bien sûr).
Pourrais-tu développer une courte explication pour les néophites comme moi de ce que je pourrais faire avec templaeEngine ? Smiley smile


slt

Il a mit un lien github (son projet) je te le remet ici : https://github.com/niux3/template-engine/tree/main

tu peux rapidement comprendre que c'est un projet permettant de "templatisé" (je sais pas si ça ce dit ? Smiley lol ); un peu à la manière de twig (si tu connais) qui permet de générer du html. c'est un moteur de templates en JavaScript, c’est-à-dire une bibliothèque qui te permet de générer du texte dynamique (comme du HTML) en mélangeant du contenu fixe et des données variables que tu peux intégrer dans ton projet projet rapidement.

Imaginons que tu veux produire une liste de produits dans une page HTML :
Tu ne veux pas écrire 100 fois la même structure HTML. Alors tu passe par un template.

Il utilise une syntaxe comme :

[[= title ]]      // pour afficher une variable (automatiquement sécurisée)
[[ if (cond) { ]] // pour écrire des conditions
[[ for (…) { ]]   // pour des boucles



Par exemple :

<h1>[[= title ]]</h1>
<ul>
[[ items.forEach(item => { ]]
  <li>[[= item.name ]] – $[[= item.price ]]</li>
[[ }) ]]
</ul>



Puis tu appelles :

engine.render(templateString, { title: "Produits", items: […] })

Modifié par JENCAL (11 Feb 2026 - 17:09)