Одномісні та подвійні котирування ("проти")


250

Я завжди використовував одинарні лапки, коли писав свій HTML вручну. Я працюю з великою кількістю виведеного HTML, який завжди використовує подвійні лапки. Це дозволяє мені визначити, чи написаний HTML вручну чи створений. Це гарна ідея?

Яка різниця між ними? Я знаю, що вони працюють і підтримуються всіма сучасними браузерами, але чи є реальна різниця, коли один в різних ситуаціях насправді кращий за інший?



5
Щоб відповісти на запитання про те, чи використовувати подвійні лапки подвійних лапок як засоби для визначення рукописних та згенерованих HTML, ні, мабуть, це не дуже гарна ідея. Хоча код, який є непослідовним (у деяких місцях використовується одинарний, в інших - подвійний), мабуть, написаний власноруч, я впевнений, що багато людей (в тому числі і я) використовують подвійні лапки скрізь, але наш код, безумовно, не створений комп'ютером; )
Doktor J

@ Відповідь Айто дійсно правильна і повинна бути прийнята ... Особисто я використовую одиничні цитати для коротких атрибутів, таких як окремі ключові слова / теги, URL та посилання; все, що не призначене для читання людиною, насправді. Для більш тривалих текстів чи будь-чого, що може включати пробіли або одинарні цитати / апострофи - я використовую подвійні лапки. Це лише питання вашого стилю (або стильового керівництва, яке ви використовуєте)
cedbeu

1
огляньте 10 основних веб-сайтів і перегляньте, чим користується більшість з них, як stackoverflow, youtube / google, wikipedia. Поки що у мене проблеми з пошуку основних веб-сайтів, які використовують одинарні лапки.
Тімо Хуовінен

Відповіді:


391

W3 org сказав :

За замовчуванням SGML вимагає, щоб усі значення атрибутів були розмежовані, використовуючи або подвійні лапки (десятковий ASCII 34), або одиничні лапки (десятковий ASCII 39). Одиничні лапки можуть бути включені до значення атрибута, коли значення розмежоване подвійними лапками і навпаки. Автори можуть також використовувати числові посилання символів для представлення подвійних лапок ( ") та одиничних лапок ( '). Для подвійних лапок автори також можуть використовувати посилання сутності символу ".

Отже ... начебто немає різниці. Тільки залежить від вашого стилю.


38
і послідовність (або з "або"), швидше за все, призведе до більш високих показників стиснення, якщо ви обслуговуєте стислі (gzip,
спущені

2
@Aito, це для SGML. Для HTML не потрібно обмежувати всі значення атрибутів
Pacerier

4
Я пропоную хоч один на подвійний - Навіщо використовувати два, коли можна виконати роботу.
Уджвальваль Сінгх

7
@JohnHunt: Просто зробив швидкий тест на файл js 1823 байтів (випадкова модель опорної кістки від випадкової програми). Вихід gzip, якщо всі цитати однакові (або 'або "), становив 809 байт. Змішування їх підштовхувало вихід до 829 байт. Це може бути неважливим для вас, але це не означає, що це не має значення для всіх.
cherouvim

3
Якщо хтось каже "о, це такий низький потенціал, мабуть, не має значення" для сотні "ймовірно нерелевантних" речей, настає смерть тисячі голок. У межах розумних зусиль, все, що можна заощадити, варто заощадити на ІМО.
ДОГОВІР каже, що я правий

67

Я використовую "як вищий рівень і 'як другий рівень, як я думаю, що це робить більшість людей. Наприклад

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

У цьому прикладі ви повинні використовувати обидва, це неминуче.


38
Я також це роблю, але цього можна уникнути, якщо уникнути включення javascript всередині html.
cherouvim

4
Є й інші ситуації, не вбудовані в JavaScript, де можуть знадобитися окремі лапки, як-от при використанні спеціальних data-*атрибутів. Залежно від вашої програми та того, як ви використовуєте data-*атрибути, вам може знадобитися використання 's в межах "s. Іноді ми використовуємо їх для відстеження подій Google Analytics:<a href="..." data-track="Homepage Banner|Clicked|Dick's Sporting Goods">click me</a>
Джейк Вілсон

3
Поміркуйтеvar x = "<a href='" + url + "'>click me</a>";
NibblyPig

4
Легко уникнути подібного: <a onclick="alert(\"Clicked!\")">. Однак це набагато менш читабельно.
fabspro

2
Я не зовсім впевнений, чи це офіційно підтримується SGML та HTML5.
fabspro

26

Цитування умов для веб-розробників

Короткий відповідь

У HTML використання одиничних лапок (') та подвійних лапок (") взаємозамінні, різниці немає.

Але послідовність рекомендується, тому ми мусимо вибрати синтаксичну умову і регулярно її використовувати.

Довга відповідь

Веб-розробка часто складається з багатьох мов програмування. HTML, JS, CSS, PHP, ASP, RoR, Python, ect. Через це у нас є багато синтаксичних умов для різних мов програмування. Часто звички з однієї мови наслідують нас до інших мов, навіть якщо це не вважається "належним", тобто умовами коментування. Цитування конвенцій також підпадає під цю категорію для мене.

Але я, як правило, використовую HTML щільно у поєднанні з PHP. І в PHP є велика різниця між одинарними та подвійними котируваннями. У PHP з подвійними лапками "ви можете вставляти змінні безпосередньо в текст рядка". (scriptingok.com) І при використанні одинарних лапок "текст з’являється таким, яким він є". (scriptingok.com)

PHP займає більше часу для обробки рядків з подвійним цитуванням . Оскільки аналізатору PHP необхідно прочитати весь рядок заздалегідь, щоб виявити будь-яку змінну всередині - і об'єднати її - процес займає більше часу, ніж один цитований рядок. (scriptingok.com)

 

Одиничні котирування простіші на сервері . Оскільки PHP не потрібно читати весь рядок заздалегідь, сервер може працювати швидше і щасливіше. (scriptingok.com)

Інші речі для розгляду

  1. Частота подвійних лапок в рядку. Я вважаю, що мені потрібно використовувати подвійні лапки (") в моїх рядках частіше, ніж мені потрібно використовувати одинарні лапки (') в межах рядків. Щоб зменшити кількість необхідних вхідних символів, я віддаю перевагу розмежувачам одиничних цитат.
  2. Простіше зробити одну цитату. Це досить зрозуміло, але для уточнення, чому натискати клавішу SHIFT більше разів, ніж потрібно.

Моя конвенція

З огляду на розуміння PHP, я встановив умову (як для себе, так і для своєї компанії), що рядки повинні бути представлені як одиночні цитати за замовчуванням для оптимізації сервера. Подвійні лапки використовуються в рядку, якщо потрібні цитати, наприклад JavaScript в атрибуті, наприклад:

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

Звичайно, якщо ми перебуваємо в PHP і хочемо, щоб аналізатор обробляв PHP змінні в рядку, ми повинні навмисно використовувати подвійні лапки. $a='Awesome'; $b = "Not $a";

Джерела

Одиничні котирування проти подвійних лапок в PHP. (другий). Отримано 26 листопада 2014 року з веб-сайту http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHP



1
Ви знаходите більше подвійних лапок, ніж одиничних цитат у своїх рядках? Цікаво. Я не можу пригадати, коли востаннє я мав подвійну цитату в своїх рядках.
Zonker.in.Geneva

Постійно. В останні 10 років як повнорозмірний розробник я вважаю, що мені потрібно використовувати подвійні лапки в рядку 10x частіше, ніж окремі цитати. Найпоширеніший приклад JavaScript - це селектори атрибутів, ТОЛЬКО працюють з подвійними лапками, тому document.querySelector("[name^='myname']")не працюють взагалі, хоча document.querySelector('[name^="myname"]')працюють ідеально.
Дастін Пуассан

@DustinPoissant WHAAAT ?? На якому браузері ??
Містер Лістер

14

Якщо все-таки все одно, можливо, використання одинарних лапок краще, оскільки не потрібно утримувати клавішу Shift. Менше натискань клавіш == менше шансів на RSI.


2
ну, принаймні, на Галактичному загальному макеті. (hush-hush)
n611x007

1
Який ризик виникнення RSI та кількість натискань клавіш пов'язані зі стандартами кодування?
Діб

так багато думок, що різниці між одинарними та подвійними котируваннями немає, а лише одна, яка пояснює, що кількість натискань клавіш відрізняється в два рази. І нам потрібно багато цитат. Чи можу я додати, що, можливо, знадобиться більше нейронів для того, щоб розпізнати зразок подвійної цитати в нашому мозку?
Роланд

Це не вірно для французьких клавіатур.
Tokeeen.com

11

В HTML я не вважаю , що це важливо , чи використовуєте ви "або ', але він повинен бути використаний послідовно на протязі всього документа.

Моє власне використання надає перевагу використанню атрибутів / html ", тоді як усі JavaScript використовує 'натомість.

Це полегшує для мене читання та перевірку. Якщо ваше використання має для вас більше сенсу, ніж моє, зміни не потрібно. Але, на мій погляд , ваш код буде відчувати себе безладним. Це все особисто.


Чому його потрібно застосовувати послідовно? Просто для читабельності?
час

Тому що простіше уникнути помилок таким чином.
Девід каже повернути Моніку

2
У мене часто є також використання атрибутів ", але в інших випадках я пишу код у PHP-коді, де я вважаю за краще echoвикористання "'s, щоб дозволити розбір. Будь-які атрибути html в рамках цього відлуння є більш читабельними, якщо використовується 's. Звичайно, це не є послідовно, але набагато простіше без усіх зворотних нахилів.
тимчасово

3
Що б вам не працювало, це добре; бути послідовним не означає "завжди робити X", це просто означає "у ситуації X робити це так", послідовність може бути усвідомлена контекстом; і найкраще використовується як такий.
Девід каже повернути Моніку

9

Насправді найкращий спосіб - це спосіб, який рекомендує Google. Подвійні цитати: https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Quotation_Marks#HTML_Quotation_Marks

Див. Https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Validity#HTML_Validity Цитовані поради від Google: "Використання дійсного HTML - це вимірюваний атрибут якості базової лінії, який сприяє вивченню технічних вимог та обмежень. Це забезпечує правильне використання HTML. "


Більшість веб-сайтів, з якими я стикався до цих пір, включаючи stackoverflow, використовують подвійні лапки, я думаю, що послідовність в Інтернеті - на краще, тому правильна відповідь ІМХО - це також "подвійні цитати".
Тімо Хуовінен

2
Але чому!? Чому "понад '! ??
Сан-

2
@ Сан Послідовність, в основному. З американського англійського стандарту випливає, що подвійні лапки є цитатами, а одиничні - для підзаписів.
Nielsvh

6

Я знаю БАГАТО людей не погодиться, але це те , що я роблю , і мені дуже подобається такий стиль в кодуванні: Я на насправді не використовувати будь-яку цитату в HTML , якщо це не є абсолютно необхідним.

Приклад:

<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>
...

Подвійні лапки використовуються лише тоді, коли у значеннях атрибутів є пробіли чи що завгодно:

<form class="val1 val2 val3" method=post action=#>
  ...
</form>

1
Чи є причина позаду? Або вам просто "дуже подобається такий стиль кодування"?
Багз Зайчик

4
Без лапок HTML виглядає набагато чистіше (а розмір файлу трохи менший). Це єдина причина і більше нічого. Крім того, я дійсно не бачу сенсу вимагати, щоб кожен атрибут мав лапки. Чому його не можна просто пропустити, щоб врятувати неприємності? Навіть w3.org приймає нецитовані значення атрибутів ( w3.org/TR/html-markup/syntax.html#syntax-attr-unquoted ). Простий - краще, ніж складний. Чи є якась релігія, щоб мати цитати?
Ренді Тан

5
Ні, ніякої релігії я не знаю. Я довгий час був навколо HTML і ніколи не бачив, щоб ваш стиль використовувався раніше ... тому я запитав.
Багз Зайчик

1
Крім того, HTML-міні-фільтри знімають непотрібні цитати.
Німрод

2
Проблема виходу з лапок навколо значень атрибутів полягає в тому, що різні стандарти мають різні списки символів, які потрібно цитувати. Наприклад, HTML4 сказав тільки значення , що складається з букв, цифр, тире і точок може йти без лапок, але HTML5 говорить , що що - то йде , крім пробілів і " '` <=>, так що ви повинні бути обережні, особливо зі старими браузерами!
Mr Lister

5

Використання подвійних лапок для HTML

тобто

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

Використання одинарних лапок для JavaScript

тобто

$('#container').addClass('colorFont');
$('<div class="colorFont2></div>');

2

У мене виникла проблема використання Bootstrap, коли використання подвійних лапок мало значення проти використання однієї цитати (яка не працювала). class = 'row-fluid' викликав у мене проблеми, через які останній проміжок опускався нижче інших прольотів, а не сидів красиво поруч праворуч, тоді як class = "row-fluid" працював.


1

якщо ви пишете asp.net, то періодично вам доводиться використовувати подвійні лапки в операторах Eval та одинарні лапки для розмежування значень - це головним чином, щоб вбудований код C # знав його, використовуючи рядок у контейнері eval, а не символом. Особисто я використовую лише те чи інше як стандарт, а не змішувати їх, все виглядає безладним.


1

Використання "замість", коли:

<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

Використання "замість", коли:

<input value='"User"'/> //Need to use double quote
var html = "<input name='username'/>" //When assigning html content to a javascript variable

3
У вашому випадку "присвоєння вмісту HTML до js змінної", я зазвичай вважаю за краще робити зворотне: var html = '<input name="username" />';і дотримуватися узгодженості з рештою html :)
Erenor Paz

1

Це не має значення для html, але якщо ви генеруєте html динамічно з іншою мовою програмування, то один спосіб може бути простішим за інший.

Наприклад, у Java подвійний лапок використовується для позначення початку та кінця рядка, тому, якщо ви хочете включити подвійне цитата в рядку, вам слід уникнути його з нахилом.

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

У вас немає такої проблеми з єдиною цитатою, тому використання єдиної цитати сприяє більш читаному коду на Java.

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

Особливо, якщо вам доводиться писати html елементи з багатьма атрибутами. (Зауважте, я зазвичай використовую бібліотеку, наприклад jhtml, щоб писати html на Java, але це не завжди практично)


Зробив два стажування на сервлетах. Я аналізував свій код і лише зараз я почав усвідомлювати реальність на подвійних котируваннях, одинарних котируваннях і рядкових конкатенаціях. Веб-сайт, який я використовував для вивчення, використовував подвійні лапки в html та одинарні цитати в Java. Навіть не зрозумів. Радий, що я нарешті отримав це ...
Майкл

0

Я новачок тут, але я використовую єдиний лапок лише тоді, коли я використовую подвійну лапку в першій. Якщо мені не ясно, я показую вам приклад:

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

Сподіваюся, я допоміг.


-5

У PHP використання подвійних лапок призводить до незначного зниження продуктивності, оскільки оцінюються імена змінних, тому на практиці я завжди використовую одинарні лапки при написанні коду:

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

Таким чином, ви можете написати це замість цього;

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

Я вважаю, що Javascript функціонує аналогічно, тому дуже крихітне поліпшення продуктивності, якщо це має значення для вас.


Крім того, якщо ви дивитесь аж до специфікації HTML 2.0, усі перелічені тут теги;

W3 HTML DTD Reference

(Використовуйте подвійні цитати.) Консистенція важлива незалежно від того, яку ви схильні використовувати частіше.


13
JavaScript не оцінює імена змінних у рядках. У JavaScript немає різниці між "і".
Джон Меллор

-9

Подвійні лапки використовуються для рядків (тобто "це рядок"), а одиночні лапки використовуються для символу (тобто "a", "b" або "c"). Залежно від мови програмування та контексту, ви можете піти з використання подвійних лапок для символу, але не одиничних лапок для рядка.

HTML не важливо, яким саме ви користуєтесь. Однак, якщо ви пишете HTML всередині сценарію PHP, вам слід дотримуватися подвійних лапок, оскільки вам потрібно буде уникати їх (тобто \ "що \"), щоб не плутати себе та PHP.


Я знаю досить багато мов програмування, але там, де це правда.
mikl

1
@mikl загальна практика в C # і Java - це рядки в подвійних лапках і символів в одиничних лапках. Але це не дає підтвердження для цієї відповіді. Якщо тільки це не відповідь на інше питання.
Evorlor
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.