我正在添加一个HTML数据属性,但我不确定在数据属性名称方面的标准约定是什么。我理解单词数据属性(data-name=""
或data-id=""
)等,但如果我在数据属性名称中使用超过一个单词,应该遵循什么约定?我是否要分隔这两个单词(data-product_id=""
或data-product-id=""
),还是采用驼峰式大小写,如:data-productID=""
?
我正在添加一个HTML数据属性,但我不确定在数据属性名称方面的标准约定是什么。我理解单词数据属性(data-name=""
或data-id=""
)等,但如果我在数据属性名称中使用超过一个单词,应该遵循什么约定?我是否要分隔这两个单词(data-product_id=""
或data-product-id=""
),还是采用驼峰式大小写,如:data-productID=""
?
数据属性应该使用连字符分隔的单词,例如data-product-id
。这样当通过dataset
在Javascript中访问它们时,它们可以自动转换为camelCase(因为大多数Javascript变量通常都是camelCase):
const div = document.querySelector('div');
console.log(div.dataset.productId);
<div data-product-id=5></div>
dataset
时会丢失,当属性很长并且包含多个单词时,这将极大损害可读性。
const div = document.querySelector('div');
console.log(div.dataset);
<div data-productID=5></div>
在数据属性中使用下划线会导致数据集属性也带有下划线,这有点奇怪,因为您可能需要在之后将其转换为驼峰命名以保持与变量命名约定一致:
const [div1, div2] = document.querySelectorAll('div');
(() => {
// a bit verbose:
const productId = div1.dataset.product_id;
console.log(productId);
})();
(() => {
// more consise and consistent
// when the variable name is the same as the property name:
const { productId } = div2.dataset;
console.log(productId);
})();
<div data-product_id=5></div>
<div data-product-id=6></div>