Si je peux me permettre, niveau lisibilité du code, je préfère
vachement voir remplacer "r" par "r" que "r" par 'r'.
Enfin, les goûts et les couleurs...
Manuel.
+1
Si je peux me permettre, niveau lisibilité du code, je préfère
vachement voir remplacer "r" par "\r" que "r" par 'r'.
Enfin, les goûts et les couleurs...
Manuel.
+1
Si je peux me permettre, niveau lisibilité du code, je préfère
vachement voir remplacer "r" par "r" que "r" par 'r'.
Enfin, les goûts et les couleurs...
Manuel.
+1
J'avais posé la question avant d'aller relire attentivement la norme,
mais je savais déjà qu'un saut de ligne ne pouvait pas être transmis
tel quel. Après relecture, je sais maintenant que les seuls caractères
à protéger sont l'apostrophe, la barre oblique , LF (U+000A), CR
(U+000D), LS (U+2028) et PS (U+2029).
J'ignore ces contraintes, peux tu détailler ?
Oui.
J'avais posé la question avant d'aller relire attentivement la norme,
mais je savais déjà qu'un saut de ligne ne pouvait pas être transmis
tel quel. Après relecture, je sais maintenant que les seuls caractères
à protéger sont l'apostrophe, la barre oblique , LF (U+000A), CR
(U+000D), LS (U+2028) et PS (U+2029).
J'ignore ces contraintes, peux tu détailler ?
Oui.
J'avais posé la question avant d'aller relire attentivement la norme,
mais je savais déjà qu'un saut de ligne ne pouvait pas être transmis
tel quel. Après relecture, je sais maintenant que les seuls caractères
à protéger sont l'apostrophe, la barre oblique , LF (U+000A), CR
(U+000D), LS (U+2028) et PS (U+2029).
J'ignore ces contraintes, peux tu détailler ?
Oui.
Alex Marandon wrote:Il y a aussi les problèmes liés à l'optimisation du temps de
chargement des pages. Générer du JavaScript dynamiquement rends
difficile et/ou inefficace la concaténation et la minification du
code ainsi que l'exploitation des caches.
Ok pour la concaténation
(...)Mais je ne comprend pas pourquoi vous parlez du cache ?
je veux simplement dire que si le code contient des données, le
navigateur devra télécharger une copie fraîche de ce code à chaque
changement des données (inefficace)
Ok compris.
L'argument ne me parait pas très pertinent : on pourra appeler un
"properties-fr" et un "properties-en" par exemple, ou un "data-200801"
et un "data-200802", avec toutes les solutions d'url rewriting existant
aujourd'hui ça sera un plaisir.
Ca impose de bien "catégoriser" ses données, mais c'est de toute façon
obligatoire non ?
Reste que l'on a toujours le besoin de fournir à JavaScript des
données et que XHR n'est pas la réponse miracle.
Comme je l'ai dit précédemment, le DOM est AMHA la "base de données"
dans le contexte d'exécution d'un navigateur web.
C'est intéressant mais en pratique ça me parait plutôt acrobatique à
gérer, car ce contenu en l'occurence ne devra pas toujours être présenté
à l'utilisateur !
Pour moi c'est déplacer le problème vers l'intégrateur
HTML
qui devra gérer des "zones cachées" servant au JavaScript à aller y
piocher des données. Ca me parait donc source de gros bugs...
sans
parler de la lourdeur du markup potentiellement généré,
et évidemment
directement les problématiques de cache !
Alex Marandon wrote:
Il y a aussi les problèmes liés à l'optimisation du temps de
chargement des pages. Générer du JavaScript dynamiquement rends
difficile et/ou inefficace la concaténation et la minification du
code ainsi que l'exploitation des caches.
Ok pour la concaténation
(...)
Mais je ne comprend pas pourquoi vous parlez du cache ?
je veux simplement dire que si le code contient des données, le
navigateur devra télécharger une copie fraîche de ce code à chaque
changement des données (inefficace)
Ok compris.
L'argument ne me parait pas très pertinent : on pourra appeler un
"properties-fr" et un "properties-en" par exemple, ou un "data-200801"
et un "data-200802", avec toutes les solutions d'url rewriting existant
aujourd'hui ça sera un plaisir.
Ca impose de bien "catégoriser" ses données, mais c'est de toute façon
obligatoire non ?
Reste que l'on a toujours le besoin de fournir à JavaScript des
données et que XHR n'est pas la réponse miracle.
Comme je l'ai dit précédemment, le DOM est AMHA la "base de données"
dans le contexte d'exécution d'un navigateur web.
C'est intéressant mais en pratique ça me parait plutôt acrobatique à
gérer, car ce contenu en l'occurence ne devra pas toujours être présenté
à l'utilisateur !
Pour moi c'est déplacer le problème vers l'intégrateur
HTML
qui devra gérer des "zones cachées" servant au JavaScript à aller y
piocher des données. Ca me parait donc source de gros bugs...
sans
parler de la lourdeur du markup potentiellement généré,
et évidemment
directement les problématiques de cache !
Alex Marandon wrote:Il y a aussi les problèmes liés à l'optimisation du temps de
chargement des pages. Générer du JavaScript dynamiquement rends
difficile et/ou inefficace la concaténation et la minification du
code ainsi que l'exploitation des caches.
Ok pour la concaténation
(...)Mais je ne comprend pas pourquoi vous parlez du cache ?
je veux simplement dire que si le code contient des données, le
navigateur devra télécharger une copie fraîche de ce code à chaque
changement des données (inefficace)
Ok compris.
L'argument ne me parait pas très pertinent : on pourra appeler un
"properties-fr" et un "properties-en" par exemple, ou un "data-200801"
et un "data-200802", avec toutes les solutions d'url rewriting existant
aujourd'hui ça sera un plaisir.
Ca impose de bien "catégoriser" ses données, mais c'est de toute façon
obligatoire non ?
Reste que l'on a toujours le besoin de fournir à JavaScript des
données et que XHR n'est pas la réponse miracle.
Comme je l'ai dit précédemment, le DOM est AMHA la "base de données"
dans le contexte d'exécution d'un navigateur web.
C'est intéressant mais en pratique ça me parait plutôt acrobatique à
gérer, car ce contenu en l'occurence ne devra pas toujours être présenté
à l'utilisateur !
Pour moi c'est déplacer le problème vers l'intégrateur
HTML
qui devra gérer des "zones cachées" servant au JavaScript à aller y
piocher des données. Ca me parait donc source de gros bugs...
sans
parler de la lourdeur du markup potentiellement généré,
et évidemment
directement les problématiques de cache !
je veux simplement dire que si le code contient des données, le
navigateur devra télécharger une copie fraîche de ce code à chaque
changement des données (inefficace)
L'argument ne me parait pas très pertinent : on pourra appeler un
"properties-fr" et un "properties-en" par exemple
Si tu fais référence à l'utilisation du champ Expires,
effectivement, que le code JavaScript soit statique où dynamique, on va
versionner les URLs pour forcer le rafraîchissement.
Comme je l'ai dit précédemment, le DOM est AMHA la "base de données"
dans le contexte d'exécution d'un navigateur web.
C'est intéressant mais en pratique ça me parait plutôt acrobatique à
gérer, car ce contenu en l'occurence ne devra pas toujours être
présenté à l'utilisateur !
Pourquoi forcer l'utilisateur à télécharger du contenu qu'il ne verra
pas ?-)
Si on part du principe qu'on peut se passer de communication entre
designer et programmeur, on va effectivement au devant de gros bugs,
quelle que soit la technique employée.
sans parler de la lourdeur du markup potentiellement généré,
C'est vrai que <input type="hidden"> l'utilisateur va le sentir passer ;-)
et évidemment directement les problématiques de cache !
Les problématiques de cache sont là de toute façon à partir du moment ou
on sert des pages dynamiques, ça ne change rien de ce point de vue là.
Sinon par curiosité, en pratique tu procèdes comment ? Est-ce que tu
crées des templates JavaScript avec des substitutions de variables au
beau milieu de code, ou bien est-ce que tu isoles ce qui varie dans des
modules chargés séparément ?
je veux simplement dire que si le code contient des données, le
navigateur devra télécharger une copie fraîche de ce code à chaque
changement des données (inefficace)
L'argument ne me parait pas très pertinent : on pourra appeler un
"properties-fr" et un "properties-en" par exemple
Si tu fais référence à l'utilisation du champ Expires,
effectivement, que le code JavaScript soit statique où dynamique, on va
versionner les URLs pour forcer le rafraîchissement.
Comme je l'ai dit précédemment, le DOM est AMHA la "base de données"
dans le contexte d'exécution d'un navigateur web.
C'est intéressant mais en pratique ça me parait plutôt acrobatique à
gérer, car ce contenu en l'occurence ne devra pas toujours être
présenté à l'utilisateur !
Pourquoi forcer l'utilisateur à télécharger du contenu qu'il ne verra
pas ?-)
Si on part du principe qu'on peut se passer de communication entre
designer et programmeur, on va effectivement au devant de gros bugs,
quelle que soit la technique employée.
sans parler de la lourdeur du markup potentiellement généré,
C'est vrai que <input type="hidden"> l'utilisateur va le sentir passer ;-)
et évidemment directement les problématiques de cache !
Les problématiques de cache sont là de toute façon à partir du moment ou
on sert des pages dynamiques, ça ne change rien de ce point de vue là.
Sinon par curiosité, en pratique tu procèdes comment ? Est-ce que tu
crées des templates JavaScript avec des substitutions de variables au
beau milieu de code, ou bien est-ce que tu isoles ce qui varie dans des
modules chargés séparément ?
je veux simplement dire que si le code contient des données, le
navigateur devra télécharger une copie fraîche de ce code à chaque
changement des données (inefficace)
L'argument ne me parait pas très pertinent : on pourra appeler un
"properties-fr" et un "properties-en" par exemple
Si tu fais référence à l'utilisation du champ Expires,
effectivement, que le code JavaScript soit statique où dynamique, on va
versionner les URLs pour forcer le rafraîchissement.
Comme je l'ai dit précédemment, le DOM est AMHA la "base de données"
dans le contexte d'exécution d'un navigateur web.
C'est intéressant mais en pratique ça me parait plutôt acrobatique à
gérer, car ce contenu en l'occurence ne devra pas toujours être
présenté à l'utilisateur !
Pourquoi forcer l'utilisateur à télécharger du contenu qu'il ne verra
pas ?-)
Si on part du principe qu'on peut se passer de communication entre
designer et programmeur, on va effectivement au devant de gros bugs,
quelle que soit la technique employée.
sans parler de la lourdeur du markup potentiellement généré,
C'est vrai que <input type="hidden"> l'utilisateur va le sentir passer ;-)
et évidemment directement les problématiques de cache !
Les problématiques de cache sont là de toute façon à partir du moment ou
on sert des pages dynamiques, ça ne change rien de ce point de vue là.
Sinon par curiosité, en pratique tu procèdes comment ? Est-ce que tu
crées des templates JavaScript avec des substitutions de variables au
beau milieu de code, ou bien est-ce que tu isoles ce qui varie dans des
modules chargés séparément ?
Finalement on n'a pas tant de caractères à échapper, surtout si l'on
traite des chaînes sans retours chariot ce qui je suppose correspond à
la majorité des cas.
Finalement on n'a pas tant de caractères à échapper, surtout si l'on
traite des chaînes sans retours chariot ce qui je suppose correspond à
la majorité des cas.
Finalement on n'a pas tant de caractères à échapper, surtout si l'on
traite des chaînes sans retours chariot ce qui je suppose correspond à
la majorité des cas.
Si on part du principe qu'on peut se passer de communication entre
designer et programmeur, on va effectivement au devant de gros bugs,
quelle que soit la technique employée.
...
Votre remarque me laisse pantois ! Admettez que veiller à bien cacher
des données présentes dans le HTML uniquement pour servir au JavaScript
impose d'être vigilant !
Vous faites comme vous voulez, moi je privilégie ce qui est le plus
simple possible, ET introduit le moins de dépendances. Là ça ne respecte
pas du tout ces critères.
sans parler de la lourdeur du markup potentiellement généré,
C'est vrai que <input type="hidden"> l'utilisateur va le sentir passer
;-)
Il faudra bien structurer ses données d'une manière ou d'une autre...
Savoir où les placer... etc
et évidemment directement les problématiques de cache !
Les problématiques de cache sont là de toute façon à partir du moment
ou on sert des pages dynamiques, ça ne change rien de ce point de vue là.
Ajouter des données dans le dom de chaque page, c'est très différent
d'appeler un fichier JS externe qui fait des var ... = ... : le 2eme
pourra être caché et visible sans distinction de toute l'application.
la page toto de l'application par contre ça sera plutôt quelques heures.
J'ai été confronté aux 2 cas que je citais plus haut :
- une liste de trucs, par exemple membres du personnel. On a un menu qui
permet de lancer des actions après avoir sélectionné des éléments, mais
ces actions (la disponibilité mais éventuellement un pré-traitement
comme une demande de paramètres) sont conditionnées par des critères tel
que l'équipe du salarié sélectionné, son niveau hiérarchique, etc.
Ces informations ne sont pas affichées dans la liste...
=> soit on planque les données dans le tableau, soit on se créée un
objet JS correspondant à la liste, soit on fait du XHR si bcp d'éléments
dans la liste et/ou de données à utiliser dans le js (et de toute façon
on aura toujours besoin de l'id pour pouvoir faire sa requête côté serveur)
- les libellés dépendants de la langue et qui n'ont pas leur place dans
le HTML (message de confirmation, titre d'une lightbox, ...)
=> dans un JS externe généré dynamiquement (avec les bons entêtes pour
que ça reste longtemps en cache, et url contenant no version et langue),
à ce jour ça me semble la moins pire des solutions
Je ne suis pas développeur front-end, et c'est bien pour cela que je
participe à cette discussion, pour apprendre :).
Si on part du principe qu'on peut se passer de communication entre
designer et programmeur, on va effectivement au devant de gros bugs,
quelle que soit la technique employée.
...
Votre remarque me laisse pantois ! Admettez que veiller à bien cacher
des données présentes dans le HTML uniquement pour servir au JavaScript
impose d'être vigilant !
Vous faites comme vous voulez, moi je privilégie ce qui est le plus
simple possible, ET introduit le moins de dépendances. Là ça ne respecte
pas du tout ces critères.
sans parler de la lourdeur du markup potentiellement généré,
C'est vrai que <input type="hidden"> l'utilisateur va le sentir passer
;-)
Il faudra bien structurer ses données d'une manière ou d'une autre...
Savoir où les placer... etc
et évidemment directement les problématiques de cache !
Les problématiques de cache sont là de toute façon à partir du moment
ou on sert des pages dynamiques, ça ne change rien de ce point de vue là.
Ajouter des données dans le dom de chaque page, c'est très différent
d'appeler un fichier JS externe qui fait des var ... = ... : le 2eme
pourra être caché et visible sans distinction de toute l'application.
la page toto de l'application par contre ça sera plutôt quelques heures.
J'ai été confronté aux 2 cas que je citais plus haut :
- une liste de trucs, par exemple membres du personnel. On a un menu qui
permet de lancer des actions après avoir sélectionné des éléments, mais
ces actions (la disponibilité mais éventuellement un pré-traitement
comme une demande de paramètres) sont conditionnées par des critères tel
que l'équipe du salarié sélectionné, son niveau hiérarchique, etc.
Ces informations ne sont pas affichées dans la liste...
=> soit on planque les données dans le tableau, soit on se créée un
objet JS correspondant à la liste, soit on fait du XHR si bcp d'éléments
dans la liste et/ou de données à utiliser dans le js (et de toute façon
on aura toujours besoin de l'id pour pouvoir faire sa requête côté serveur)
- les libellés dépendants de la langue et qui n'ont pas leur place dans
le HTML (message de confirmation, titre d'une lightbox, ...)
=> dans un JS externe généré dynamiquement (avec les bons entêtes pour
que ça reste longtemps en cache, et url contenant no version et langue),
à ce jour ça me semble la moins pire des solutions
Je ne suis pas développeur front-end, et c'est bien pour cela que je
participe à cette discussion, pour apprendre :).
Si on part du principe qu'on peut se passer de communication entre
designer et programmeur, on va effectivement au devant de gros bugs,
quelle que soit la technique employée.
...
Votre remarque me laisse pantois ! Admettez que veiller à bien cacher
des données présentes dans le HTML uniquement pour servir au JavaScript
impose d'être vigilant !
Vous faites comme vous voulez, moi je privilégie ce qui est le plus
simple possible, ET introduit le moins de dépendances. Là ça ne respecte
pas du tout ces critères.
sans parler de la lourdeur du markup potentiellement généré,
C'est vrai que <input type="hidden"> l'utilisateur va le sentir passer
;-)
Il faudra bien structurer ses données d'une manière ou d'une autre...
Savoir où les placer... etc
et évidemment directement les problématiques de cache !
Les problématiques de cache sont là de toute façon à partir du moment
ou on sert des pages dynamiques, ça ne change rien de ce point de vue là.
Ajouter des données dans le dom de chaque page, c'est très différent
d'appeler un fichier JS externe qui fait des var ... = ... : le 2eme
pourra être caché et visible sans distinction de toute l'application.
la page toto de l'application par contre ça sera plutôt quelques heures.
J'ai été confronté aux 2 cas que je citais plus haut :
- une liste de trucs, par exemple membres du personnel. On a un menu qui
permet de lancer des actions après avoir sélectionné des éléments, mais
ces actions (la disponibilité mais éventuellement un pré-traitement
comme une demande de paramètres) sont conditionnées par des critères tel
que l'équipe du salarié sélectionné, son niveau hiérarchique, etc.
Ces informations ne sont pas affichées dans la liste...
=> soit on planque les données dans le tableau, soit on se créée un
objet JS correspondant à la liste, soit on fait du XHR si bcp d'éléments
dans la liste et/ou de données à utiliser dans le js (et de toute façon
on aura toujours besoin de l'id pour pouvoir faire sa requête côté serveur)
- les libellés dépendants de la langue et qui n'ont pas leur place dans
le HTML (message de confirmation, titre d'une lightbox, ...)
=> dans un JS externe généré dynamiquement (avec les bons entêtes pour
que ça reste longtemps en cache, et url contenant no version et langue),
à ce jour ça me semble la moins pire des solutions
Je ne suis pas développeur front-end, et c'est bien pour cela que je
participe à cette discussion, pour apprendre :).
En clair, une chaîne délimitée par des quotes simples (respectivement
doubles), en dehors des séquences d'échappement dont je n'ai pas copié
la syntaxe, peut contenir tout caractère Unicode, sauf une quote simple
(respectivement double), un backslash, ou l'un des terminateurs de ligne
que sont LF (10), CR (13), LS (U+2028) et PS (U+2029).
Et donc les syntaxes suivantes sont invalides :
var invalid1 = 'aujourd'hui';
var invalid2 = 'tout de suite';
var invalid3 = 'et
maintenant';
En revanche les suivantes sont valides :
var valid1 = 'aujourd'hui';
var valid2 = 'tout de suite';
var valid3 = 'etrn maintenant';
En clair, une chaîne délimitée par des quotes simples (respectivement
doubles), en dehors des séquences d'échappement dont je n'ai pas copié
la syntaxe, peut contenir tout caractère Unicode, sauf une quote simple
(respectivement double), un backslash, ou l'un des terminateurs de ligne
que sont LF (10), CR (13), LS (U+2028) et PS (U+2029).
Et donc les syntaxes suivantes sont invalides :
var invalid1 = 'aujourd'hui';
var invalid2 = 'tout de suite';
var invalid3 = 'et
maintenant';
En revanche les suivantes sont valides :
var valid1 = 'aujourd'hui';
var valid2 = '\tout de suite\';
var valid3 = 'etrn maintenant';
En clair, une chaîne délimitée par des quotes simples (respectivement
doubles), en dehors des séquences d'échappement dont je n'ai pas copié
la syntaxe, peut contenir tout caractère Unicode, sauf une quote simple
(respectivement double), un backslash, ou l'un des terminateurs de ligne
que sont LF (10), CR (13), LS (U+2028) et PS (U+2029).
Et donc les syntaxes suivantes sont invalides :
var invalid1 = 'aujourd'hui';
var invalid2 = 'tout de suite';
var invalid3 = 'et
maintenant';
En revanche les suivantes sont valides :
var valid1 = 'aujourd'hui';
var valid2 = 'tout de suite';
var valid3 = 'etrn maintenant';