在手动编写 HTML 时,我总是使用单引号。我使用很多渲染的 HTML,它们总是使用双引号。这使我可以确定 HTML 是手动编写的还是生成的。这是一个好主意吗?
两者有什么区别?我知道它们都可以工作并且受到所有现代浏览器的支持,但是在不同情况下一个实际上比另一个更好的地方有真正的区别吗?
w3 组织 said:
默认情况下,SGML 要求使用双引号(ASCII 十进制 34)或单引号(ASCII 十进制 39)分隔所有属性值。当值由双引号分隔时,可以在属性值中包含单引号,反之亦然。作者还可以使用数字字符引用来表示双引号 (") 和单引号 (')。对于双引号,作者还可以使用字符实体引用“”。
所以……好像没什么区别。只取决于你的风格。
我使用 "
作为顶层,使用 '
作为第二层,我想大多数人都会这样做。例如
<a href="#" onclick="alert('Clicked!');">Click Me!</a>
在该示例中,您必须同时使用两者,这是不可避免的。
data-*
属性时。根据您的应用程序以及您使用 data-*
属性的方式,您可能需要在 "
中使用 '
。有时我们将它们用于 Google Analytics 事件跟踪:<a href="..." data-track="Homepage Banner|Clicked|Dick's Sporting Goods">click me</a>
var x = "<a href='" + url + "'>click me</a>";
Web 开发人员的引用约定
简短的回答
在 HTML 中单引号 (') 和双引号 (") 的使用是可以互换的,没有区别。
但是建议保持一致性,因此我们必须选择一个语法约定并定期使用它。
长答案
Web 开发通常由多种编程语言组成。 HTML、JS、CSS、PHP、ASP、RoR、Python 等。因此,我们对不同的编程语言有许多语法约定。通常,一种语言的习惯会跟随我们到其他语言,即使它不被认为是“适当的”,即评论约定。引用约定对我来说也属于这一类。
但我倾向于将 HTML 与 PHP 紧密结合使用。在 PHP 中,单引号和双引号之间有很大的区别。在带有双引号的 PHP 中“您可以直接在字符串的文本中插入变量”。 (scriptingok.com) 当使用单引号时,“文本按原样显示”。 (scriptingok.com)
PHP 需要更长的时间来处理双引号字符串。由于 PHP 解析器必须提前读取整个字符串以检测其中的任何变量(并将其连接起来),因此它比单引号字符串需要更长的处理时间。 (scriptingok.com)
单引号在服务器上更容易。由于 PHP 不需要预先读取整个字符串,因此服务器可以更快更快乐地工作。 (scriptingok.com)
其他需要考虑的事项
字符串中双引号的频率。我发现我需要在字符串中使用双引号 (") 比在字符串中使用单引号 (') 更频繁。为了减少所需的字符转义数,我更喜欢使用单引号分隔符。引用。这是不言自明的,但要澄清一下,为什么按 SHIFT 键的次数比你必须的多。
我的约定
有了对 PHP 的这种理解,我已经设置了约定(为我自己和我公司的其他人),默认情况下字符串将被表示为单引号以进行服务器优化。如果需要引号,例如属性中的 JavaScript,则在字符串中使用双引号,例如:
<button onClick='func("param");'>Press Me</button>
当然,如果我们在 PHP 中并希望解析器处理字符串中的 PHP 变量,我们应该有意使用双引号。 $a='Awesome'; $b = "Not $a";
来源
PHP中的单引号与双引号。 (nd)。检索于 2014 年 11 月 26 日,来自 http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHP
document.querySelector("[name^='myname']")
根本不起作用,而 document.querySelector('[name^="myname"]')
可以完美运行。
如果都一样,也许使用单引号会更好,因为它不需要按住 shift 键。更少的击键 == repetitive strain injury 的机会更少。
实际上,最好的方式是谷歌推荐的方式。双引号: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。”
"
而不是 '
!???
在 HTML 中,我认为使用 "
还是 '
并不重要,但应该在整个文档中始终如一地使用它。
我自己的用法更喜欢属性/html 使用 "
,而所有 javascript 都使用 '
。
这使我更容易阅读和检查。如果您的使用对您来说比我的更有意义,则无需更改。但是,对我来说,你的代码会感觉很乱。一切都是个人的。
"
属性,但其他时候我在 PHP 代码中编写代码,我更喜欢 echo
使用 "
以允许解析。如果使用 '
,则此回显中的任何 html 属性都更具可读性。当然它并不一致,但是没有所有反斜杠会容易得多。
对 HTML 使用双引号
IE
<div class="colorFont"></div>
对 JavaScript 使用单引号
IE
$('#container').addClass('colorFont');
$('<div class="colorFont2></div>');
我知道很多人不会同意,但这就是我所做的,我真的很喜欢这样的编码风格:我实际上不会在 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>
我遇到了 Bootstrap 的问题,我必须使用双引号,因为单引号不起作用。
class='row-fluid'
使最后一个 <span>
低于其他 <span>
,而不是在最右边很好地坐在它们旁边。 class="row-fluid"
工作。
它对 html 没有影响,但是如果您使用另一种编程语言动态生成 html,那么一种方法可能比另一种更容易。
例如,在 Java 中,双引号用于指示字符串的开始和结束,因此如果要在字符串中包含双引号,则必须使用反斜杠对其进行转义。
String s = "<a href=\"link\">a Link</a>"
单引号没有这样的问题,因此使用单引号可以使 Java 中的代码更具可读性。
String s = "<a href='link'>a Link</a>"
特别是如果您必须编写具有许多属性的 html 元素。(注意,我通常使用 jhtml 之类的库在 Java 中编写 html,但这样做并不总是很实用)
如果您正在编写 asp.net,那么有时您必须在 Eval 语句中使用双引号并使用单引号来分隔值 - 这主要是为了让 C# 内联代码知道它在 eval 容器中使用字符串而不是字符。就我个人而言,我只会使用其中一个作为标准而不是混合它们,这看起来很乱。
在以下情况下使用 " 而不是 '
<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
var html = '<input name="username" />';
并与其他 html 保持一致:)
我是这里的新手,但我只在第一个引号内使用双引号时才使用单引号。如果我不清楚,我会向您展示示例:
<p align="center" title='One quote mark at the beginning so now I can
"cite".'> ... </p>
我希望我有所帮助。
这里有很多很棒的有见地的回复!足以让任何人做出明确和个人的决定。
我只想指出一件对我来说一直很重要的事情。把这个和一粒盐一起吃!
双引号适用于具有多个单相的字符串,例如 "one two"
,而不适用于 'one'
或 'two'
的单引号。这可以追溯到 C 和 C++。
(reference here 或进行您自己的在线搜索)。
这就是真正的区别。
有了这个原则(这个不同),解析成为可能,例如 "{{'a','b'},{'x','y'}}
或 "/[^\r\n]*[\r\n]"
(需要独立于空间,因为它是表达式)或更着名的 HTML 特定 title = "Hello HTML!"
或 style = "font-family:arial; color:#FF0000;"
这里有趣的是,HTML(来自 XML 本身)由于表达特性而通常采用双引号,即使它是单个字符(例如数字)或单相字符串。
正如 NibblyPig 所指出的那样:
"
作为顶层而 '
作为第二层,因为 "'a string here'"
是有效的,并且符合 W3 标准(这是网络)并且很可能永远不会改变。
为了保持一致性,双引号被明智地使用,但只能根据偏好完全正确。
在 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,这里列出的所有标签;
(使用双引号。)无论您倾向于更频繁地使用哪个,一致性都很重要。
双引号用于字符串(即“这是一个字符串”),单引号用于字符(即'a'、'b'或'c')。根据编程语言和上下文,您可以避免对字符使用双引号,但不能对字符串使用单引号。
HTML 不关心你使用哪一个。但是,如果您在 PHP 脚本中编写 HTML,您应该坚持使用双引号,因为您需要将它们转义(即 \"whatever\")以避免混淆您自己和 PHP。
'
或"
),则 gzip 输出为 809 字节。混合它们将输出推到 829 字节。这可能与您无关,但这并不意味着它与每个人都无关。