11569 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)