我一直在手写HTML时使用单引号。我处理很多渲染后的HTML,它们总是使用双引号。这样可以让我确定HTML是手写的还是生成的。这是一个好主意吗?
两者之间有什么区别?我知道它们都可以工作,并且所有现代浏览器都支持它们,但在不同情况下是否有真正的区别,其中一个比另一个更好?
我一直在手写HTML时使用单引号。我处理很多渲染后的HTML,它们总是使用双引号。这样可以让我确定HTML是手写的还是生成的。这是一个好主意吗?
两者之间有什么区别?我知道它们都可以工作,并且所有现代浏览器都支持它们,但在不同情况下是否有真正的区别,其中一个比另一个更好?
w3.org 表示:
默认情况下,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>
。 - Jake Wilsonvar x = "<a href='" + url + "'>点击我</a>";
。 - NibblyPig在HTML中,单引号(')和双引号(")是可以互换使用的,没有区别。
但建议保持一致性,并选择一种语法习惯并经常使用。
Web开发通常涉及多种编程语言,如HTML、JS、CSS、PHP、ASP、RoR、Python等,因此我们有许多不同的编程语言语法约定。通常来自一种语言的习惯会影响到我们在其他语言中的写作风格,即使这不被认为是“正确”的(例如注释约定)。对于引号约定也是如此。
但我往往会将HTML与PHP紧密结合使用。在PHP中,单引号和双引号有重大区别。在PHP中,使用双引号“可以直接在字符串的文本中插入变量”(scriptingok.com)。而使用单引号时,“文本会按原样显示”(scriptingok.com)。
PHP处理双引号字符串需要更长时间。由于PHP解析器必须预先读取整个字符串以检测其中的任何变量,并进行串联操作,因此处理时间比单引号字符串长(scriptingok.com)。
单引号对服务器更友好。由于PHP无需预先读取整个字符串,因此服务器可以更快地工作(scriptingok.com)。
其他需要考虑的事项
对于 PHP 的理解,我已经设定了一个惯例(对于我和公司的其他成员),即默认情况下将字符串表示为单引号以进行服务器优化。如果需要在属性中使用引号,例如 JavaScript,则在字符串内部使用双引号,如下所示:
<button onClick='func("param");'>Press Me</button>
当然,如果我们在 PHP 中希望解析器处理字符串内的 PHP 变量,则应故意使用双引号。$a='Awesome'; $b = "Not $a";
PHP 单引号与双引号的区别。 (n.d.). 2022年3月22日从http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHP检索
document.querySelector("[name^='myname']")
根本不起作用,而document.querySelector('[name^="myname"]')
则完美地工作。 - Dustin Poissant实际上,最好的方法是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。”
"
而不是 '
!? - San"
或'
不重要,但在整个文档中应始终保持一致。"
,而所有的 JavaScript 则使用 '
。"
作为属性,但有时我会在编写PHP代码时更喜欢使用echo
的"
以允许解析。如果在此echo中存在任何html属性,则使用'
更易读。虽然这不是一致的,但没有所有反斜杠会更容易。 - timetofly我知道很多人可能不同意我的做法,但这正是我所使用的编程风格,我非常喜欢:在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>
<div class="colorFont"></div>
使用单引号表示JavaScript字符串
例如:
$('#container').addClass('colorFont');
$('<div class="colorFont2></div>');
我曾遇到一个与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,但不总是实际可行的)