Citations simples vs doubles ('vs ")

250

J'ai toujours utilisé des guillemets simples lors de l'écriture de mon HTML à la main. Je travaille avec beaucoup de HTML rendu qui utilise toujours des guillemets doubles. Cela me permet de déterminer si le HTML a été écrit à la main ou généré. Est-ce une bonne idée?

Quelle est la différence entre les deux? Je sais qu'ils fonctionnent tous les deux et sont pris en charge par tous les navigateurs modernes, mais y a-t-il une vraie différence où l'un est réellement meilleur que l'autre dans des situations différentes?

ctrlShiftBryan
la source
5
Pour répondre à la question de savoir si l'utilisation de guillemets simples contre des guillemets doubles pour déterminer le code HTML manuscrit ou généré, non, ce n'est probablement pas une bonne idée. Bien que le code qui est incohérent (utilise le single à certains endroits, le double dans d'autres) soit probablement écrit à la main, je suis sûr que beaucoup de gens (y compris moi-même) utilisent des guillemets partout, mais notre code n'est certainement pas généré par ordinateur; )
Doktor J
@ La réponse d'Aito est en effet correcte et devrait être acceptée ... Personnellement, j'utilise des guillemets simples pour des attributs courts comme des mots-clés / balises simples, des URL et des références; tout ce qui n'est pas destiné à être lu par l'homme, en fait. Pour les textes plus longs, ou tout ce qui pourrait inclure des espaces ou des guillemets simples / apostrophes - en tant que contenu, j'utilise des guillemets doubles. C'est juste une question de style (ou le guide de style que vous utilisez)
cedbeu
1
consultez 10 sites Web majeurs et découvrez ce que la majorité d'entre eux utilisent, comme stackoverflow, youtube / google, wikipedia. Jusqu'à présent, j'ai du mal à trouver les principaux sites Web qui utilisent des guillemets simples.
Timo Huovinen

Réponses:

391

L'organisation W3 a déclaré :

Par défaut, SGML requiert que toutes les valeurs d'attribut soient délimitées à l'aide de guillemets doubles (ASCII décimal 34) ou de guillemets simples (ASCII décimal 39). Des guillemets simples peuvent être inclus dans la valeur d'attribut lorsque la valeur est délimitée par des guillemets doubles, et vice versa. Les auteurs peuvent également utiliser des références de caractères numériques pour représenter les guillemets doubles ( ") et les guillemets simples ( '). Pour les guillemets doubles, les auteurs peuvent également utiliser la référence d'entité de caractère ".

Donc ... ne semble pas faire de différence. Ne dépend que de votre style.

Aito
la source
38
et être cohérent (avec 'ou') entraînera très probablement des taux de compression plus élevés si vous servez des pages compressées (gzip,
dégonflage
2
@Aito, c'est pour SGML. Pour HTML, toutes les valeurs d'attribut ne doivent pas être délimitées
Pacerier
4
Je suggère bien que simple sur double - Pourquoi utiliser deux quand on peut faire le travail.
Ujjwal Singh du
7
@JohnHunt: Je viens de faire un test rapide sur un fichier js de 1823 octets (un modèle de backbone aléatoire provenant d'une application aléatoire). La sortie gzip si toutes les guillemets sont les mêmes (soit 'ou ") était de 809 octets. Les mélanger a poussé la sortie à 829 octets. Cela peut ne pas être pertinent pour vous, mais cela ne signifie pas que cela ne concerne pas tout le monde.
cherouvim du
3
Si l'on dit "oh, c'est un potentiel si faible, probablement hors de propos" pour cent choses "probablement hors de propos", la mort de mille aiguilles s'ensuit. Dans un effort raisonnable, tout ce que vous pouvez enregistrer vaut la peine d'être sauvé OMI.
LE CONTRAT DIT QUE J'AI DROIT
67

J'utilise "comme niveau supérieur et 'comme deuxième niveau, comme j'imagine que la plupart des gens le font. Par exemple

<a href="#" onclick="alert('Clicked!');">Click Me!</a>

Dans cet exemple, vous devez utiliser les deux, c'est inévitable.

NibblyPig
la source
38
Je le fais aussi, mais cela peut être évité si vous évitez d'inclure le javascript dans le html.
cherouvim
4
Il existe d'autres situations non javascript non intégrées où des guillemets simples peuvent être requis, comme lors de l'utilisation d' data-*attributs personnalisés . En fonction de votre application et de la façon dont vous utilisez les data-*attributs, vous devrez peut-être utiliser '«entre "». Parfois, nous les utilisons pour le suivi des événements de Google Analytics:<a href="..." data-track="Homepage Banner|Clicked|Dick's Sporting Goods">click me</a>
Jake Wilson
3
Considérezvar x = "<a href='" + url + "'>click me</a>";
NibblyPig
4
Peut être facilement évité comme ceci: <a onclick="alert(\"Clicked!\")">. Cependant, c'est beaucoup moins lisible.
fabspro
2
Cependant, je ne suis pas tout à fait sûr que cela soit officiellement pris en charge par SGML et HTML5.
fabspro
26

Conventions de citation pour les développeurs Web

La réponse courte

En HTML, l'utilisation de guillemets simples (') et de guillemets doubles (") sont interchangeables, il n'y a pas de différence.

Mais la cohérence est recommandée, nous devons donc choisir une convention de syntaxe et l'utiliser régulièrement.

La réponse longue

Le développement Web comprend souvent de nombreux langages de programmation. HTML, JS, CSS, PHP, ASP, RoR, Python, etc. Pour cette raison, nous avons de nombreuses conventions de syntaxe pour différents langages de programmation. Souvent, les habbits d'une langue nous suivront dans d'autres langues, même si cela n'est pas considéré comme «approprié», c'est-à-dire des conventions de commentaires. Les conventions de citation tombent également dans cette catégorie pour moi.

Mais j'ai tendance à utiliser HTML étroitement en conjonction avec PHP. Et en PHP, il y a une différence majeure entre les guillemets simples et les guillemets doubles. En PHP avec guillemets doubles "vous pouvez insérer des variables directement dans le texte de la chaîne". (scriptingok.com) Et lorsque vous utilisez des guillemets simples, "le texte apparaît tel quel". (scriptingok.com)

PHP prend plus de temps pour traiter les chaînes entre guillemets doubles . Étant donné que l'analyseur PHP doit lire la chaîne entière à l'avance pour détecter toute variable à l'intérieur - et la concaténer - le traitement prend plus de temps qu'une seule chaîne entre guillemets. (scriptingok.com)

 

Les devis simples sont plus faciles sur le serveur . Comme PHP n'a pas besoin de lire la chaîne entière à l'avance, le serveur peut fonctionner plus rapidement et plus facilement. (scriptingok.com)

Autres choses à considérer

  1. Fréquence des guillemets doubles dans la chaîne. Je trouve que je dois utiliser des guillemets doubles (") dans mes chaînes plus souvent que je n'ai besoin d'utiliser des guillemets simples (') dans les chaînes. Pour réduire le nombre d'échappements de caractères nécessaires, je privilégie les délimiteurs de guillemets simples.
  2. Il est plus facile de faire un seul devis. Ceci est assez explicite, mais pour clarifier, pourquoi appuyer sur la touche MAJ plus de fois que nécessaire.

Ma convention

Avec cette compréhension de PHP, j'ai établi la convention (pour moi et le reste de mon entreprise) que les chaînes doivent être représentées par guillemets simples par défaut pour l'optimisation du serveur. Des guillemets doubles sont utilisés dans la chaîne si des guillemets sont requis tels que JavaScript dans un attribut, par exemple:

<button onClick='func("param");'>Press Me</button>

Bien sûr, si nous sommes en PHP et que l'analyseur gère les variables PHP dans la chaîne, nous devons intentionnellement utiliser des guillemets doubles. $a='Awesome'; $b = "Not $a";

Sources

Citations simples vs guillemets doubles en PHP. (nd). Extrait le 26 novembre 2014 de http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHP

Dustin Poissant
la source
3
La différence de performance entre guillemets simples et guillemets doubles en PHP était connue pour être de zéro an avant que vous ne répondiez à cette question: nikic.github.io/2012/01/09/…
Conor Mancone
1
Vous trouvez plus de guillemets doubles que de guillemets simples dans vos chaînes? Intéressant. Je ne me souviens pas de la dernière fois où j'ai eu une double citation dans mes cordes.
Zonker.in.Genève
Constamment. Au cours des 10 dernières années, en tant que développeur à pile complète, j'ai dû utiliser des guillemets doubles dans une chaîne 10 fois plus souvent que des guillemets simples. L'exemple le plus courant pour JavaScript est que les sélecteurs d'attributs fonctionnent UNIQUEMENT avec des guillemets doubles, donc document.querySelector("[name^='myname']")ne fonctionnent pas du tout lorsqu'ils document.querySelector('[name^="myname"]')fonctionnent parfaitement.
Dustin Poissant
@DustinPoissant WHAAAT ?? Sur quel navigateur ??
M. Lister,
14

Si c'est la même chose, il est peut-être préférable d'utiliser des guillemets simples car cela ne nécessite pas de maintenir la touche Maj enfoncée. Moins de frappes == moins de chances de RSI.

stko
la source
2
enfin, au moins sur la mise en page commune galactique. (hush-hush)
n611x007
1
Quel est le risque de RSI et le nombre de frappes liées aux normes de codage?
Dib
tellement d'opinions qu'il n'y a pas de différence entre les guillemets simples et doubles, mais un seul qui précise que le nombre de touches diffère d'un facteur DEUX. Et nous avons besoin de nombreuses citations. Puis-je ajouter avec la suggestion qu'il faudra peut-être plus de neurones pour tirer pour la reconnaissance de modèle d'une double citation dans notre cerveau?
Roland
Ce n'est pas vrai pour les claviers français.
Tokeeen.com
11

En HTML, je ne pense pas que ce soit important que vous utilisiez "ou ', mais il doit être utilisé de manière cohérente dans tout le document.

Ma propre utilisation préfère que les attributs / html utilisent ", alors que tout javascript utilise à la 'place.

Cela me permet de lire et de vérifier un peu plus facilement. Si votre utilisation a plus de sens pour vous que la mienne, il n'y a pas lieu de changer. Mais, pour moi, votre code se sentirait en désordre. C'est personnel, c'est tout.

David dit de réintégrer Monica
la source
Pourquoi doit-il être utilisé de manière cohérente? Juste pour la lisibilité?
horaire
Parce qu'il est plus facile d'éviter les erreurs de cette façon.
David dit de réintégrer Monica
2
J'ai souvent les attributs à utiliser "aussi, mais d'autres fois j'écris du code en code PHP où je préférerais l' echoutilisation "pour permettre l'analyse. Tout attribut html dans cet écho est plus lisible si vous utilisez '. Bien sûr, ce n'est pas cohérent, mais c'est beaucoup plus facile sans toutes les barres obliques inverses.
horaire
3
Tout ce qui fonctionne pour vous est bien; être cohérent ne signifie pas «toujours faire X», cela signifie simplement «dans la situation X, faites-le de cette façon», la cohérence peut être sensible au contexte; et est mieux utilisé en tant que tel.
David dit de réintégrer Monica
9

En fait, la meilleure façon est celle que Google recommande. Citations doubles: https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Quotation_Marks#HTML_Quotation_Marks

Voir https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Validity#HTML_Validity. Conseils de Google: "L'utilisation de code HTML valide est un attribut de qualité de référence mesurable qui contribue à l'apprentissage des exigences et contraintes techniques, et qui garantit utilisation correcte du HTML. "

Stuart
la source
La grande majorité des sites Web que j'ai rencontrés jusqu'à présent, y compris stackoverflow, utilisent des guillemets doubles, je pense que la cohérence sur le Web est pour le mieux, donc la bonne réponse à mon humble avis est également des "guillemets doubles".
Timo Huovinen
2
Mais pourquoi!? Pourquoi "plus '! ??
San
2
@San Consistency, principalement. Il suit la norme anglaise américaine selon laquelle les guillemets doubles sont pour les guillemets et les guillemets simples sont pour les sous-guillemets.
Nielsvh
6

Je sais que beaucoup de gens ne seraient pas d'accord, mais c'est ce que je fais et j'aime vraiment un tel style de codage: en fait, je n'utilise aucune citation en HTML, sauf si c'est absolument nécessaire.

Exemple:

<form method=post action=#>
<fieldset>
<legend>Register here: </legend>
  <label for=account>Account: </label>
  <input id=account type=text name=account required><br>
  <label for=password>Password: </label>
  <input id=password type=password name=password required><br>
...

Les guillemets doubles sont utilisés uniquement lorsqu'il y a des espaces dans les valeurs d'attribut ou autre:

<form class="val1 val2 val3" method=post action=#>
  ...
</form>
Randy Tang
la source
1
Y a-t-il une raison derrière? Ou vous "appréciez vraiment un tel style de codage"?
Bugs Bunny
4
Sans guillemets, le HTML semble beaucoup plus propre (et la taille du fichier est un peu plus petite). C'est la seule raison et rien d'autre. De plus, je ne vois vraiment pas l'intérêt d'exiger que chaque attribut ait des guillemets. Pourquoi ne peut-il pas être simplement omis pour sauver le problème? Même w3.org accepte les valeurs d'attribut non citées ( w3.org/TR/html-markup/syntax.html#syntax-attr-unquoted ). Simple, c'est mieux que complexe. Est-ce une sorte de religion d'avoir des citations?
Randy Tang
5
Non, pas de religion à ma connaissance. Je connais HTML depuis un certain temps et je n'ai jamais vu votre style utilisé auparavant ... c'est pourquoi j'ai demandé.
Bugs Bunny
1
De plus, les minificateurs HTML suppriment également les citations inutiles.
Nimrod
2
Le problème avec l'omission des guillemets autour des valeurs d'attribut est que les différentes normes ont des listes de caractères différentes qui doivent être citées. Par exemple, HTML4 a déclaré que seules les valeurs composées de lettres, de chiffres, de tirets et de points pouvaient ne pas être citées, mais HTML5 dit que tout va sauf les espaces et "'` <=>, vous devez donc être prudent, en particulier avec les navigateurs plus anciens!
M. Lister
5

Utilisation de guillemets doubles pour HTML

c'est à dire

<div class="colorFont"></div>

Utilisation de guillemets simples pour JavaScript

c'est à dire

$('#container').addClass('colorFont');
$('<div class="colorFont2></div>');
Alan Dong
la source
2

J'ai eu un problème avec Bootstrap où l'utilisation de guillemets doubles importait par rapport à l'utilisation de guillemets simples (qui ne fonctionnait pas). class = 'row-fluid' m'a donné des problèmes pour que la dernière travée tombe en dessous des autres travées plutôt que de s'asseoir bien à côté à l'extrême droite, alors que class = "row-fluid" fonctionnait.

MikeP
la source
1

si vous écrivez asp.net, vous devez parfois utiliser des guillemets doubles dans les instructions Eval et des guillemets simples pour délimiter les valeurs - c'est principalement pour que le code en ligne C # sache qu'il utilise une chaîne dans le conteneur eval plutôt qu'un caractère. Personnellement, je n'utiliserais que l'un ou l'autre comme standard et ne les mélangerais pas, cela semble désordonné, c'est tout.

Mauro
la source
1

Utiliser "au lieu de" lorsque:

<input value="user"/> //Standard html
<input value="user's choice"/> //Need to use single quote
<input onclick="alert('hi')"/> //When giving string as parameter for javascript function

Utiliser 'au lieu de "lorsque:

<input value='"User"'/> //Need to use double quote
var html = "<input name='username'/>" //When assigning html content to a javascript variable
a1204773
la source
3
Dans votre cas de "l'attribution de contenu html faire variable js", je préfère généralement faire le contraire: var html = '<input name="username" />';et garder la cohérence avec le reste de html :)
Erenor Paz
1

Cela ne fait aucune différence pour le HTML, mais si vous générez du HTML de manière dynamique avec un autre langage de programmation, une méthode peut être plus facile qu'une autre.

Par exemple, en Java, le guillemet double est utilisé pour indiquer le début et la fin d'une chaîne, donc si vous souhaitez inclure un guillemet double dans la chaîne, vous devez l'échapper avec une barre oblique inverse.

String s = "<a href=\"link\">a Link</a>"

Vous n'avez pas un tel problème avec le guillemet simple, donc l'utilisation du guillemet simple rend le code plus lisible en Java.

String s = "<a href='link'>a Link</a>"

Surtout si vous devez écrire des éléments html avec de nombreux attributs (notez que j'utilise généralement une bibliothèque telle que jhtml pour écrire du html en Java, mais pas toujours pratique pour le faire)

Paul Taylor
la source
A fait deux stages sur des servlets. J'analysais mon code et ce n'est que maintenant que j'ai commencé à réaliser la réalité des guillemets doubles, des guillemets simples et des concaténations de chaînes. Le site Web que j'avais l'habitude d'étudier utilisait des guillemets doubles en html et des guillemets simples en java. Je ne m'en suis même pas rendu compte. Heureux d'avoir enfin compris ...
Michael
0

Je suis novice ici, mais j'utilise un guillemet simple uniquement lorsque j'utilise un guillemet double dans le premier. Si je ne suis pas clair, je vous montre l'exemple:

<p align="center" title='One quote mark at the beginning so now I can
"cite".'> ... </p>

J'espère avoir aidé.

Marcin C
la source
-5

En PHP, l'utilisation de guillemets doubles entraîne une légère diminution des performances car les noms de variables sont évalués, donc dans la pratique, j'utilise toujours des guillemets simples lors de l'écriture de code:

echo "This will print you the value of $this_variable!";
echo 'This will literally say $this_variable with no evaluation.';

Vous pouvez donc écrire ceci à la place;

echo 'This will show ' . $this_variable . '!';

Je crois que Javascript fonctionne de la même manière, donc une très petite amélioration des performances, si cela vous importe.


De plus, si vous regardez tout le long de la spécification HTML 2.0, toutes les balises répertoriées ici;

Référence DTD HTML W3

(Utilisez des guillemets doubles.) La cohérence est importante, peu importe ce que vous avez tendance à utiliser plus souvent.

Raiden
la source
13
JavaScript n'évalue pas les noms de variables dans les chaînes. Il n'y a aucune différence entre 'et "en JavaScript.
John Mellor
-9

Les guillemets doubles sont utilisés pour les chaînes (c'est-à-dire "c'est une chaîne") et les guillemets simples sont utilisés pour un caractère (c'est-à-dire 'a', 'b' ou 'c'). Selon le langage de programmation et le contexte, vous pouvez vous en sortir en utilisant des guillemets doubles pour un caractère mais pas des guillemets simples pour une chaîne.

HTML ne se soucie pas de celui que vous utilisez. Cependant, si vous écrivez du HTML dans un script PHP, vous devez vous en tenir à des guillemets doubles car vous devrez les échapper (c'est-à-dire \ "quoi que ce soit") pour éviter de vous confondre avec PHP.

CD Reimer
la source
Je connais pas mal de langages de programmation, mais un où cela est vrai.
mikl
1
@mikl pratique générale en C # et Java est des chaînes en guillemets doubles et des caractères en guillemets simples. Mais cela ne donne aucune validation pour cette réponse. A moins que ce ne soit la réponse à une autre question.
Evorlor